Jitsi: the OpenSource Java VoIP and Instant Messaging client.

net.java.sip.communicator.service.neomedia
Class DefaultStreamConnector

java.lang.Object
  extended by net.java.sip.communicator.service.neomedia.DefaultStreamConnector
All Implemented Interfaces:
StreamConnector

public class DefaultStreamConnector
extends Object
implements StreamConnector

Represents a default implementation of StreamConnector which is initialized with a specific pair of control and data DatagramSockets and which closes them (if they exist) when its close() is invoked.

Author:
Lubomir Marinov

Nested Class Summary
 
Nested classes/interfaces inherited from interface net.java.sip.communicator.service.neomedia.StreamConnector
StreamConnector.Protocol
 
Field Summary
static int BIND_RETRIES_DEFAULT_VALUE
          The default number of binds that a Media Service Implementation should execute in case a port is already bound to (each retry would be on a new random port).
static String BIND_RETRIES_PROPERTY_NAME
          The name of the property containing the number of binds that a Media Service Implementation should execute in case a port is already bound to (each retry would be on a new port in the allowed boundaries).
protected  DatagramSocket controlSocket
          The DatagramSocket that a stream should use for control data (e.g.
protected  DatagramSocket dataSocket
          The DatagramSocket that a stream should use for data (e.g.
static String MAX_PORT_NUMBER_PROPERTY_NAME
          The name of the property that contains the maximum port number that we'd like our RTP managers to bind upon.
static String MIN_PORT_NUMBER_PROPERTY_NAME
          The name of the property that contains the minimum port number that we'd like our RTP managers to bind upon.
 
Constructor Summary
DefaultStreamConnector()
          Initializes a new DefaultStreamConnector instance with no control and data DatagramSockets.
DefaultStreamConnector(DatagramSocket dataSocket, DatagramSocket controlSocket)
          Initializes a new DefaultStreamConnector instance which is to represent a specific pair of control and data DatagramSockets.
DefaultStreamConnector(InetAddress bindAddr)
          Initializes a new DefaultStreamConnector instance with a specific bind InetAddress.
 
Method Summary
 void close()
          Releases the resources allocated by this instance in the course of its execution and prepares it to be garbage collected.
 DatagramSocket getControlSocket()
          Returns a reference to the DatagramSocket that a stream should use for control data (e.g.
 Socket getControlTCPSocket()
          Returns a reference to the Socket that a stream should use for control data (e.g.
 DatagramSocket getDataSocket()
          Returns a reference to the DatagramSocket that a stream should use for data (e.g.
 Socket getDataTCPSocket()
          Returns a reference to the Socket that a stream should use for data (e.g.
 StreamConnector.Protocol getProtocol()
          Returns the protocol of this StreamConnector.
 void started()
          Notifies this instance that utilization of its DatagramSockets for data and/or control traffic has started.
 void stopped()
          Notifies this instance that utilization of its DatagramSockets for data and/or control traffic has temporarily stopped.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BIND_RETRIES_DEFAULT_VALUE

public static final int BIND_RETRIES_DEFAULT_VALUE
The default number of binds that a Media Service Implementation should execute in case a port is already bound to (each retry would be on a new random port).

See Also:
Constant Field Values

BIND_RETRIES_PROPERTY_NAME

public static final String BIND_RETRIES_PROPERTY_NAME
The name of the property containing the number of binds that a Media Service Implementation should execute in case a port is already bound to (each retry would be on a new port in the allowed boundaries).

See Also:
Constant Field Values

MAX_PORT_NUMBER_PROPERTY_NAME

public static final String MAX_PORT_NUMBER_PROPERTY_NAME
The name of the property that contains the maximum port number that we'd like our RTP managers to bind upon.

See Also:
Constant Field Values

MIN_PORT_NUMBER_PROPERTY_NAME

public static final String MIN_PORT_NUMBER_PROPERTY_NAME
The name of the property that contains the minimum port number that we'd like our RTP managers to bind upon.

See Also:
Constant Field Values

controlSocket

protected DatagramSocket controlSocket
The DatagramSocket that a stream should use for control data (e.g. RTCP) traffic.


dataSocket

protected DatagramSocket dataSocket
The DatagramSocket that a stream should use for data (e.g. RTP) traffic.

Constructor Detail

DefaultStreamConnector

public DefaultStreamConnector()
Initializes a new DefaultStreamConnector instance with no control and data DatagramSockets.

Suitable for extenders willing to delay the creation of the control and data sockets. For example, they could override getControlSocket() and/or getDataSocket() and create them on demand.


DefaultStreamConnector

public DefaultStreamConnector(InetAddress bindAddr)
Initializes a new DefaultStreamConnector instance with a specific bind InetAddress. The new instance is to attempt to bind on demand to the specified InetAddress in the port range defined by the ConfigurationService properties MIN_PORT_NUMBER_PROPERTY_NAME and MAX_PORT_NUMBER_PROPERTY_NAME at most BIND_RETRIES_PROPERTY_NAME times.

Parameters:
bindAddr - the local InetAddress the new instance is to attempt to bind to

DefaultStreamConnector

public DefaultStreamConnector(DatagramSocket dataSocket,
                              DatagramSocket controlSocket)
Initializes a new DefaultStreamConnector instance which is to represent a specific pair of control and data DatagramSockets.

Parameters:
dataSocket - the DatagramSocket to be used for data (e.g. RTP) traffic
controlSocket - the DatagramSocket to be used for control data (e.g. RTCP) traffic
Method Detail

close

public void close()
Releases the resources allocated by this instance in the course of its execution and prepares it to be garbage collected.

Specified by:
close in interface StreamConnector
See Also:
StreamConnector.close()

getControlSocket

public DatagramSocket getControlSocket()
Returns a reference to the DatagramSocket that a stream should use for control data (e.g. RTCP) traffic.

Specified by:
getControlSocket in interface StreamConnector
Returns:
a reference to the DatagramSocket that a stream should use for control data (e.g. RTCP) traffic
See Also:
StreamConnector.getControlSocket()

getDataSocket

public DatagramSocket getDataSocket()
Returns a reference to the DatagramSocket that a stream should use for data (e.g. RTP) traffic.

Specified by:
getDataSocket in interface StreamConnector
Returns:
a reference to the DatagramSocket that a stream should use for data (e.g. RTP) traffic
See Also:
StreamConnector.getDataSocket()

getDataTCPSocket

public Socket getDataTCPSocket()
Returns a reference to the Socket that a stream should use for data (e.g. RTP) traffic.

Specified by:
getDataTCPSocket in interface StreamConnector
Returns:
a reference to the Socket that a stream should use for data (e.g. RTP) traffic.

getControlTCPSocket

public Socket getControlTCPSocket()
Returns a reference to the Socket that a stream should use for control data (e.g. RTCP).

Specified by:
getControlTCPSocket in interface StreamConnector
Returns:
a reference to the Socket that a stream should use for control data (e.g. RTCP).

getProtocol

public StreamConnector.Protocol getProtocol()
Returns the protocol of this StreamConnector.

Specified by:
getProtocol in interface StreamConnector
Returns:
the protocol of this StreamConnector

started

public void started()
Notifies this instance that utilization of its DatagramSockets for data and/or control traffic has started.

Specified by:
started in interface StreamConnector
See Also:
StreamConnector.started()

stopped

public void stopped()
Notifies this instance that utilization of its DatagramSockets for data and/or control traffic has temporarily stopped. This instance should be prepared to be started at a later time again though.

Specified by:
stopped in interface StreamConnector
See Also:
StreamConnector.stopped()

Jitsi: the OpenSource Java VoIP and Instant Messaging client.

Jitsi, the OpenSource Java VoIP and Instant Messaging client.
Distributable under LGPL license.