sipxmedialib  Version 3.3
Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
MpRtpInputConnection Class Reference

Connection container for the inbound and outbound network paths to a single remote party. More...

#include <MpRtpInputConnection.h>

Inheritance diagram for MpRtpInputConnection:
Inheritance graph
[legend]
Collaboration diagram for MpRtpInputConnection:
Collaboration graph
[legend]

Public Member Functions

Creators
 MpRtpInputConnection (const UtlString &resourceName, MpConnectionID myID, IRTCPSession *piRTCPSession=NULL, int maxRtpStreams=1, MprRtpDispatcher::RtpStreamAffinity rtpStreamAffinity=MprRtpDispatcher::ADDRESS_AND_PORT)
 Constructor. More...
 
virtual ~MpRtpInputConnection ()
 Destructor. More...
 
- Public Member Functions inherited from MpResource
 MpResource (const UtlString &rName, int minInputs, int maxInputs, int minOutputs, int maxOutputs)
 Constructor. More...
 
virtual ~MpResource ()
 Destructor. More...
 
virtual UtlBoolean disable ()
 Disable this resource. More...
 
virtual UtlBoolean enable ()
 Enable this resource. More...
 
virtual void reset ()
 This method is invoked for resources that care about stream discontinuities. More...
 
UtlBoolean handleMessages (OsMsgQ &msgQ)
 Handles a queue full of incoming messages for this media processing object. More...
 
void setVisitState (int newState)
 Sets the visit state for this resource. More...
 
OsStatus sendNotification (MpResNotificationMsg::RNMsgType msgType)
 Send a notification with the given message type if notifications are enabled. More...
 
OsStatus sendNotification (MpResNotificationMsg &msg)
 Send the given notification message if notifications are enabled. More...
 
virtual void setStreamId (int streamId)
 Set the ID of a stream inside of the connection this resource belongs to. More...
 
virtual int getStreamId (void)
 Get the ID of a stream within the connection this resource belongs to. More...
 
virtual OsStatus pushBuffer (int inputPort, MpBufPtr &inputBuffer)
 Receive buffer asynchronously from resource at given input port. More...
 
virtual void reassignSSRC (void)
 Broadcast announcement that we are changing our SSRC. More...
 
MpFlowGraphBasegetFlowGraph () const
 Returns parent flowgraph. More...
 
void getInputInfo (int inPortIdx, MpResource *&rpUpstreamResource, int &rUpstreamPortIdx)
 Returns information about the upstream end of a connection. More...
 
const UtlString & getName () const
 Returns the name associated with this resource. More...
 
void getOutputInfo (int outPortIdx, MpResource *&rpDownstreamResource, int &rDownstreamPortIdx)
 Returns information about the downstream end of a connection. More...
 
int getVisitState ()
 Returns the current visit state for this resource. More...
 
int maxInputs () const
 Returns the maximum number of inputs supported by this resource. More...
 
int maxOutputs () const
 Returns the maximum number of outputs supported by this resource. More...
 
int minInputs () const
 Returns the minimum number of inputs required by this resource. More...
 
int minOutputs () const
 Returns the minimum number of outputs required by this resource. More...
 
int numInputs () const
 Returns the number of resource inputs that are currently connected. More...
 
int numOutputs () const
 Returns the number of resource outputs that are currently connected. More...
 
virtual MpConnectionID getConnectionId (void) const
 Get the ID of a connection this resource belongs to. More...
 
int reserveFirstUnconnectedInput ()
 Find the first unconnected input port and reserve it. More...
 
int reserveFirstUnconnectedOutput ()
 Find the first unconnected output port and reserve it. More...
 
UtlContainableType getContainableType () const
 Get the ContainableType for a UtlContainable derived class. More...
 
virtual OsStatus getCurrentLatency (int &latency, int input=0, int output=0) const
 Get current input to output latency (in samples) More...
 
UtlBoolean isEnabled () const
 Returns TRUE is this resource is currently enabled, FALSE otherwise. More...
 
UtlBoolean isInputConnected (int portIdx)
 Returns TRUE if portIdx is valid and the indicated input is connected, FALSE otherwise. More...
 
UtlBoolean isInputUnconnected (int portIdx)
 Returns TRUE if portIdx is valid and the indicated input is not connected, FALSE otherwise. More...
 
UtlBoolean isOutputConnected (int portIdx)
 Returns TRUE if portIdx is valid and the indicated output is connected, FALSE otherwise. More...
 
UtlBoolean isOutputUnconnected (int portIdx)
 Returns TRUE if portIdx is valid and the indicated output is not connected, FALSE otherwise. More...
 
UtlBoolean areNotificationsEnabled () const
 Returns TRUE if notification sending is enabled on this resource. More...
 
virtual UtlBoolean isAsynchInput (int inputIndex)
 Takes asynchronous input (pushBuffer). More...
 

Protected Types

enum  { MPRM_SET_INACTIVITY_TIMEOUT = MpResourceMsg::MPRM_EXTERNAL_MESSAGE_START, MPRM_ENABLE_SSRC_DISCARD, MPRM_DISABLE_SSRC_DISCARD }
 

Protected Member Functions

UtlBoolean connectOutput (MpResource &rTo, int toPortIdx, int fromPortIdx)
 Connects the fromPortIdx output port on this resource to the toPortIdx input port of the rTo resource. More...
 
UtlBoolean disconnectOutput (int outPortIdx)
 Removes the connection to the outPortIdx output port of this resource. More...
 
OsStatus setFlowGraph (MpFlowGraphBase *pFlowGraph)
 Associates this resource with the indicated flow graph. More...
 
virtual UtlBoolean handleMessage (MpResourceMsg &rMsg)
 Handle resource messages for this resource. More...
 
void handleSetInactivityTimeout (const OsTime &timeout)
 Handle message to set MpRtpDispatcher inactivity timeout. More...
 
void handleEnableSsrcDiscard (UtlBoolean enable, RtpSRC ssrc)
 Handle message to enable/disable stream discard. More...
 
- Protected Member Functions inherited from MpResource
virtual UtlBoolean handleMessage (MpFlowGraphMsg &fgMsg)
 Handles an incoming flowgraph message for this media processing object. More...
 
virtual UtlBoolean handleEnable ()
 perform the enable operation on the resource More...
 
virtual UtlBoolean handleDisable ()
 perform the disable operation on the resource More...
 
void setInputBuffer (int inPortIdx, const MpBufPtr &pBuf)
 If there already is a buffer stored for this input port, delete it. Then store pBuf for the indicated input port. More...
 
OsStatus postMessage (MpFlowGraphMsg &rMsg)
 Post a message from this resource. More...
 
OsStatus postMessage (MpResourceMsg &rMsg)
 Post a message for this resource. More...
 
UtlBoolean pushBufferDownsream (int outPortIdx, const MpBufPtr &pBuf)
 Makes pBuf available to resource connected to the outPortIdx output port of this resource. More...
 
virtual OsStatus setNotificationsEnabled (UtlBoolean enable)
 Sets whether or not this resource should send notifications. More...
 
virtual UtlBoolean connectInput (MpResource &rFrom, int fromPortIdx, int toPortIdx)
 Connects the toPortIdx input port on this resource to the fromPortIdx output port of the rFrom resource. More...
 
virtual UtlBoolean disconnectInput (int inPortIdx)
 Removes the connection to the inPortIdx input port of this resource. More...
 
void setName (const UtlString &rName)
 Sets the name that is associated with this resource. More...
 

Protected Attributes

MprFromNetmpFromNet
 UDP to RTP converter. More...
 
MprRtpDispatchermpRtpDispatcher
 RTP stream dispatcher. More...
 
int mMaxRtpStreams
 Maximum number of RTP streams. More...
 
MprRtpDispatcher::RtpStreamAffinity mRtpStreamAffinity
 Algorithm used to dispatch incoming RTP packets. More...
 
UtlBoolean mIsRtpStarted
 Are we currently receiving RTP stream? More...
 
- Protected Attributes inherited from MpResource
MpFlowGraphBasempFlowGraph
 flow graph this resource belongs to More...
 
MpConnectionID mConnectionId
 The ID of connection this resource belongs to. More...
 
int mStreamId
 
UtlBoolean mIsEnabled
 TRUE if resource is enabled, FALSE otherwise. More...
 
OsRWMutex mRWMutex
 reader/writer lock for synchronization More...
 
MpBufPtrmpInBufs
 input buffers for this resource More...
 
MpBufPtrmpOutBufs
 output buffers for this resource More...
 
ConnmpInConns
 input connections for this resource More...
 
ConnmpOutConns
 output connections for this resource More...
 
int mMaxInputs
 maximum number of inputs More...
 
int mMaxOutputs
 maximum number of outputs More...
 
int mMinInputs
 number of required inputs More...
 
int mMinOutputs
 number of required outputs More...
 
int mNumActualInputs
 actual number of connected inputs More...
 
int mNumActualOutputs
 actual number of connected outputs More...
 
int mVisitState
 (used by flow graph topological sort alg.) More...
 
UtlBoolean mNotificationsEnabled
 Whether we should send notifications or not. More...
 
OsBSem mLock
 used mainly to make safe changes to ports More...
 

Private Member Functions

 MpRtpInputConnection (const MpRtpInputConnection &rMpRtpInputConnection)
 Copy constructor (not implemented for this type) More...
 
MpRtpInputConnectionoperator= (const MpRtpInputConnection &rhs)
 Assignment operator (not implemented for this type) More...
 

Manipulators

UtlBoolean processFrame ()
 Process one frame of audio. More...
 
void setSockets (OsSocket &rRtpSocket, OsSocket &rRtcpSocket)
 Starts receiving RTP and RTCP packets. More...
 
void releaseSockets ()
 Stops receiving RTP and RTCP packets. More...
 
void setConnectionId (MpConnectionID connectionId)
 Set the ID of a connection this resource belongs to. More...
 
static OsStatus setRtpInactivityTimeout (const UtlString &namedResource, OsMsgQ &fgQ, int timeoutMs)
 
static OsStatus enableSsrcDiscard (const UtlString &namedResource, OsMsgQ &fgQ, UtlBoolean enable, RtpSRC ssrc)
 

Additional Inherited Members

- Public Types inherited from MpResource
enum  VisitState { NOT_VISITED, IN_PROGRESS, FINISHED }
 Graph traversal states that are used when running a topological sort to order resources within a flow graph. More...
 
enum  { ASSOCIATED_LATENCY =-1, INF_LATENCY =-1 }
 
- Static Public Member Functions inherited from MpResource
static OsStatus disable (const UtlString &namedResource, OsMsgQ &fgQ)
 Post a message to disable the resource named. More...
 
static OsStatus enable (const UtlString &namedResource, OsMsgQ &fgQ)
 Post a message to enable the resource named. More...
 
static OsStatus setNotificationsEnabled (UtlBoolean enable, const UtlString &namedResource, OsMsgQ &fgQ)
 Post a message to enable or disable resource notifications on the named resource. More...
 
static void resourceInfo (MpResource *pResource, int index)
 Displays information on the console about the specified resource. More...
 
- Static Public Attributes inherited from MpResource
static const UtlContainableType TYPE = "MpResource"
 Class name, used for run-time checks. More...
 
- Static Protected Attributes inherited from MpResource
static const OsTime sOperationQueueTimeout = OsTime::OS_INFINITY
 The timeout for message operations for all resources when posting to the flowgraph queue. More...
 

Detailed Description

Connection container for the inbound and outbound network paths to a single remote party.

Member Enumeration Documentation

anonymous enum
protected
Enumerator
MPRM_SET_INACTIVITY_TIMEOUT 
MPRM_ENABLE_SSRC_DISCARD 
MPRM_DISABLE_SSRC_DISCARD 

Constructor & Destructor Documentation

MpRtpInputConnection ( const UtlString &  resourceName,
MpConnectionID  myID,
IRTCPSession *  piRTCPSession = NULL,
int  maxRtpStreams = 1,
MprRtpDispatcher::RtpStreamAffinity  rtpStreamAffinity = MprRtpDispatcher::ADDRESS_AND_PORT 
)

Constructor.

Note
If rtpStreamAffinity is set to ADDRESS_AND_PORT, then only one RTP stream is allowed, i.e. maxRtpStreams must be 1.
~MpRtpInputConnection ( )
virtual

Destructor.

MpRtpInputConnection ( const MpRtpInputConnection rMpRtpInputConnection)
private

Copy constructor (not implemented for this type)

Member Function Documentation

UtlBoolean processFrame ( void  )
virtual

Process one frame of audio.

Implements MpResource.

void setSockets ( OsSocket &  rRtpSocket,
OsSocket &  rRtcpSocket 
)

Starts receiving RTP and RTCP packets.

Warning
This method is not synchronous! I.e. it directly modifies resource structure without message passing.
void releaseSockets ( )

Stops receiving RTP and RTCP packets.

Warning
This method is not synchronous! I.e. it directly modifies resource structure without message passing.
void setConnectionId ( MpConnectionID  connectionId)
virtual

Set the ID of a connection this resource belongs to.

Warning
This method directly modifies resource structure.

Reimplemented from MpResource.

OsStatus setRtpInactivityTimeout ( const UtlString &  namedResource,
OsMsgQ &  fgQ,
int  timeoutMs 
)
static

OsStatus enableSsrcDiscard ( const UtlString &  namedResource,
OsMsgQ &  fgQ,
UtlBoolean  enable,
RtpSRC  ssrc 
)
static

UtlBoolean connectOutput ( MpResource rTo,
int  toPortIdx,
int  fromPortIdx 
)
protectedvirtual

Connects the fromPortIdx output port on this resource to the toPortIdx input port of the rTo resource.

Note
This method locks to avoid contention over port allocation. It SHOULD NOT be used in process frame.
Returns
TRUE if successful, FALSE otherwise.

Reimplemented from MpResource.

UtlBoolean disconnectOutput ( int  outPortIdx)
protectedvirtual

Removes the connection to the outPortIdx output port of this resource.

Note
This method locks to avoid contention over port allocation. It SHOULD NOT be used in process frame.
Returns
TRUE if successful, FALSE otherwise.

Reimplemented from MpResource.

OsStatus setFlowGraph ( MpFlowGraphBase pFlowGraph)
protectedvirtual

Associates this resource with the indicated flow graph.

Parameters
[in]pFlowGraph- pointer to a flowgraph owning this resource.
Return values
OS_SUCCESS- for now, this method always returns success

Reimplemented from MpResource.

UtlBoolean handleMessage ( MpResourceMsg rMsg)
protectedvirtual

Handle resource messages for this resource.

Reimplemented from MpResource.

void handleSetInactivityTimeout ( const OsTime &  timeout)
protected

Handle message to set MpRtpDispatcher inactivity timeout.

void handleEnableSsrcDiscard ( UtlBoolean  enable,
RtpSRC  ssrc 
)
protected

Handle message to enable/disable stream discard.

MpRtpInputConnection& operator= ( const MpRtpInputConnection rhs)
private

Assignment operator (not implemented for this type)

Member Data Documentation

MprFromNet* mpFromNet
protected

UDP to RTP converter.

MprRtpDispatcher* mpRtpDispatcher
protected

RTP stream dispatcher.

int mMaxRtpStreams
protected

Maximum number of RTP streams.

MprRtpDispatcher::RtpStreamAffinity mRtpStreamAffinity
protected

Algorithm used to dispatch incoming RTP packets.

UtlBoolean mIsRtpStarted
protected

Are we currently receiving RTP stream?