/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jitsi.impl.neomedia; import java.io.*; import java.net.*; import org.jitsi.service.neomedia.*; /** * RTPConnector implementation for UDP. * * @author Sebastien Vincent */ public class RTPConnectorTCPImpl extends AbstractRTPConnector { /** * The TCP socket this instance uses to send and receive RTP packets. */ private Socket dataSocket; /** * The TCP socket this instance uses to send and receive RTCP packets. */ private Socket controlSocket; /** * Initializes a new <tt>RTPConnectorTCPImpl</tt> which is to use a given * pair of sockets for RTP and RTCP traffic specified in the form * of a <tt>StreamConnector</tt>. * * @param connector the pair of sockets for RTP and RTCP traffic * the new instance is to use */ public RTPConnectorTCPImpl(StreamConnector connector) { super(connector); } /** * Gets the TCP socket this instance uses to send and receive RTP packets. * * @return the TCP socket this instance uses to send and receive RTP packets */ public Socket getDataSocket() { if (dataSocket == null) dataSocket = connector.getDataTCPSocket(); return dataSocket; } /** * Gets the TCP Socket this instance uses to send and receive RTCP packets. * * @return the TCP Socket this instance uses to send and receive RTCP * packets */ public Socket getControlSocket() { if (controlSocket == null) controlSocket = connector.getControlTCPSocket(); return controlSocket; } /** * Creates the RTCP packet input stream to be used by <tt>RTPManager</tt>. * * @return a new RTCP packet input stream to be used by <tt>RTPManager</tt> * @throws IOException if an error occurs during the creation of the RTCP * packet input stream */ protected RTPConnectorInputStream createControlInputStream() throws IOException { return new RTPConnectorTCPInputStream(getControlSocket()); } /** * Creates the RTCP packet output stream to be used by <tt>RTPManager</tt>. * * @return a new RTCP packet output stream to be used by <tt>RTPManager</tt> * @throws IOException if an error occurs during the creation of the RTCP * packet output stream */ protected RTPConnectorOutputStream createControlOutputStream() throws IOException { return new RTPConnectorTCPOutputStream(getControlSocket()); } /** * Creates the RTP packet input stream to be used by <tt>RTPManager</tt>. * * @return a new RTP packet input stream to be used by <tt>RTPManager</tt> * @throws IOException if an error occurs during the creation of the RTP * packet input stream */ protected RTPConnectorInputStream createDataInputStream() throws IOException { return new RTPConnectorTCPInputStream(getDataSocket()); } /** * Creates the RTP packet output stream to be used by <tt>RTPManager</tt>. * * @return a new RTP packet output stream to be used by <tt>RTPManager</tt> * @throws IOException if an error occurs during the creation of the RTP * packet output stream */ protected RTPConnectorOutputStream createDataOutputStream() throws IOException { return new RTPConnectorTCPOutputStream(getDataSocket()); } }