OpalCall Class Reference

#include <call.h>

List of all members.

Public Member Functions

virtual BOOL StartRecording (const PFilePath &fn)
virtual void StopRecording ()
void OnStopRecordAudio (const PString &callToken)
Overrides from PObject
void PrintOn (ostream &strm) const
Basic operations
BOOL IsEstablished () const
virtual void OnEstablishedCall ()
OpalConnection::CallEndReason GetCallEndReason () const
void SetCallEndReason (OpalConnection::CallEndReason reason)
void Clear (OpalConnection::CallEndReason reason=OpalConnection::EndedByLocalUser, PSyncPoint *sync=NULL)
virtual void OnCleared ()
Connection management
virtual BOOL OnSetUp (OpalConnection &connection)
virtual BOOL OnAlerting (OpalConnection &connection)
virtual OpalConnection::AnswerCallResponse OnAnswerCall (OpalConnection &connection, const PString &caller)
virtual BOOL OnConnected (OpalConnection &connection)
virtual BOOL OnEstablished (OpalConnection &connection)
virtual void OnReleased (OpalConnection &connection)
PSafePtr< OpalConnectionGetOtherPartyConnection (const OpalConnection &connection) const
PSafePtr< OpalConnectionGetConnection (PINDEX idx, PSafetyMode mode=PSafeReference)
Media management
virtual OpalMediaFormatList GetMediaFormats (const OpalConnection &connection, BOOL includeSpecifiedConnection)
virtual BOOL OpenSourceMediaStreams (const OpalConnection &connection, const OpalMediaFormatList &mediaFormats, unsigned sessionID)
virtual BOOL PatchMediaStreams (const OpalConnection &connection, OpalMediaStream &source)
virtual void OnRTPStatistics (const OpalConnection &connection, const RTP_Session &session)
virtual void CloseMediaStreams ()
virtual void RemoveMediaStreams ()
virtual BOOL IsMediaBypassPossible (const OpalConnection &connection, unsigned sessionID) const
User indications
virtual void OnUserInputString (OpalConnection &connection, const PString &value)
virtual void OnUserInputTone (OpalConnection &connection, char tone, int duration)
Member variable access
OpalManagerGetManager () const
const PString & GetToken () const
const PString & GetPartyA () const
const PString & GetPartyB () const
void SetPartyB (const PString &b)
const PTime & GetStartTime () const

Protected Member Functions

friend OpalConnection::OpalConnection (OpalCall &, OpalEndPoint &, const PString &, unsigned int, OpalConnection::StringOptions *)
friend OpalConnection::~OpalConnection ()

Protected Attributes

OpalManagermanager
PString myToken
PString partyA
PString partyB
PTime startTime
BOOL isEstablished
BOOL isClearing
OpalConnection::CallEndReason callEndReason
PSafeList< OpalConnectionconnectionsActive
PSyncPoint * endCallSyncPoint


Detailed Description

This class manages a call. A call consists of one or more OpalConnection instances. While these connections may be created elsewhere this class is responsible for their disposal.

An OpalCall could manage (for example) a H323Connection and PCSSConnection instance, which allows the user to use opal in a H.323 application. Alternatively, if OpalCall manages a H323Connection and a SIPConnection instance, the call is being gatewayed from one protocol to another.

In a conference situation, one OpalCall would manage lots of H323Connection/SIPConnection classes.


Constructor & Destructor Documentation

OpalCall::OpalCall ( OpalManager manager  ) 

Create a new call.

Parameters:
manager  Manager for the opal system

OpalCall::~OpalCall (  ) 

Destroy call.

OpalCall::OpalConnection::~OpalConnection (  )  [protected]

OpalCall::OpalCall ( OpalManager manager  ) 

Create a new call.

Parameters:
manager  Manager for the opal system

OpalCall::~OpalCall (  ) 

Destroy call.


Member Function Documentation

void OpalCall::PrintOn ( ostream &  strm  )  const

Standard stream print function. The PObject class has a << operator defined that calls this function polymorphically.

Parameters:
strm  Stream to output text representation

BOOL OpalCall::IsEstablished (  )  const [inline]

Indicate tha all connections in call are connected and media is going.

virtual void OpalCall::OnEstablishedCall (  )  [virtual]

Call back to indicate that the call has been established. At this point in time there are no connections left in the call.

The default behaviour is to call OpalManager::OnEstablishedCall().

OpalConnection::CallEndReason OpalCall::GetCallEndReason (  )  const [inline]

Get the call clearand reason for this connection shutting down. Note that this function is only generally useful in the H323EndPoint::OnConnectionCleared() function. This is due to the connection not being cleared before that, and the object not even exiting after that.

If the call is still active then this will return OpalConnection::NumCallEndReasons.

void OpalCall::SetCallEndReason ( OpalConnection::CallEndReason  reason  ) 

Set the call clearance reason. An application should have no cause to use this function. It is present for the H323EndPoint::ClearCall() function to set the clearance reason.

Parameters:
reason  Reason for clearance of connection.

void OpalCall::Clear ( OpalConnection::CallEndReason  reason = OpalConnection::EndedByLocalUser,
PSyncPoint *  sync = NULL 
)

Clear call. This releases all connections currently attached to the call. Note that this function will return quickly as the release and disposal of the connections is done by another thread.

The sync parameter is a PSyncPoint that will be signalled during the destructor for the OpalCall. Note only one thread may do this at a time.

Parameters:
reason  Reason for call clearing
sync  Sync point to signal on call destruction

virtual void OpalCall::OnCleared (  )  [virtual]

Call back to indicate that the call has been cleared. At this point in time there are no connections left in the call.

The default behaviour is to call OpalManager::OnClearedCall().

virtual BOOL OpalCall::OnSetUp ( OpalConnection connection  )  [virtual]

Call back for SetUp conenction.

The default behaviour is to call SetUpConnection() on all the other connections in the call.

Parameters:
connection  Connection that indicates it is alerting

virtual BOOL OpalCall::OnAlerting ( OpalConnection connection  )  [virtual]

Call back for alerting.

The default behaviour is to call SetAlerting() on all the other connections in the call.

Parameters:
connection  Connection that indicates it is alerting

virtual OpalConnection::AnswerCallResponse OpalCall::OnAnswerCall ( OpalConnection connection,
const PString &  caller 
) [virtual]

Call back for answering an incoming call. This function is called after the connection has been acknowledged but before the connection is established

This gives the application time to wait for some event before signalling to the endpoint that the connection is to proceed. For example the user pressing an "Answer call" button.

If AnswerCallDenied is returned the connection is aborted and the connetion specific end call PDU is sent. If AnswerCallNow is returned then the connection proceeding, Finally if AnswerCallPending is returned then the protocol negotiations are paused until the AnsweringCall() function is called.

The default behaviour returns AnswerCallPending.

virtual BOOL OpalCall::OnConnected ( OpalConnection connection  )  [virtual]

A call back function whenever a connection is "connected". This indicates that a connection to an endpoint was connected. That is the endpoint received acknowledgement via whatever protocol it uses that the connection may now start media streams.

In the context of H.323 this means that the CONNECT pdu has been received.

The default behaviour is to call SetConnected() on all other connections in the call.

Parameters:
connection  Connection that indicates it is alerting

virtual BOOL OpalCall::OnEstablished ( OpalConnection connection  )  [virtual]

A call back function whenever a connection is "established". This indicates that a connection to an endpoint was connected and that media streams are opened.

In the context of H.323 this means that the CONNECT pdu has been received and either fast start was in operation or the subsequent Open Logical Channels have occurred. For SIP it indicates the INVITE/OK/ACK sequence is complete.

The default behaviour is to check that all connections in call are established and if so, marks the call as established and calls OnEstablishedCall().

Parameters:
connection  Connection that indicates it is alerting

virtual void OpalCall::OnReleased ( OpalConnection connection  )  [virtual]

A call back function whenever a connection is released.

The default behaviour releases the remaining connection if there is only one left.

Parameters:
connection  Connection that was established

PSafePtr<OpalConnection> OpalCall::GetOtherPartyConnection ( const OpalConnection connection  )  const

Get the other party's connection object. This will return the other party in the call. It will return NULL if there is no other party yet, or there are more than two parties in the call. Usefull during certain stages during initial call set up.

Parameters:
connection  Source requesting formats

PSafePtr<OpalConnection> OpalCall::GetConnection ( PINDEX  idx,
PSafetyMode  mode = PSafeReference 
) [inline]

Get the specified active connection in call.

virtual OpalMediaFormatList OpalCall::GetMediaFormats ( const OpalConnection connection,
BOOL  includeSpecifiedConnection 
) [virtual]

Get the media formats of the connections in call. This returns the intersection of all the media formats that all connections in the call, optionally excepting the one provided as a parameter, are capable of.

This will also add to the list all media formats for which there are transcoders registered.

Parameters:
connection  Connection requesting formats
includeSpecifiedConnection  Include parameters media

virtual BOOL OpalCall::OpenSourceMediaStreams ( const OpalConnection connection,
const OpalMediaFormatList mediaFormats,
unsigned  sessionID 
) [virtual]

Open transmitter media streams for each connection. All connections in the call except the one specified are requested to open a source media stream. If successful, then PatchMediaStreams() is called which in turns starts the sink media stream on the connection.

Parameters:
connection  Connection requesting open
mediaFormats  Optional media format to open
sessionID  Session to start streams on

virtual BOOL OpalCall::PatchMediaStreams ( const OpalConnection connection,
OpalMediaStream source 
) [virtual]

Connect up the media streams on the connections. This creates a media patch and a sink media stream on the specified connection for the specified source media stream. The created media patch is a thread, but it is not started immediately.

Parameters:
connection  Source connection
source  Source media stream to patch

virtual void OpalCall::OnRTPStatistics ( const OpalConnection connection,
const RTP_Session session 
) [virtual]

Callback from the RTP session for statistics monitoring. This is called every so many packets on the transmitter and receiver threads of the RTP session indicating that the statistics have been updated.

The default behaviour does nothing.

Parameters:
connection  Connection for the channel
session  Session with statistics

virtual void OpalCall::CloseMediaStreams (  )  [virtual]

Close the media streams on the connections.

virtual void OpalCall::RemoveMediaStreams (  )  [virtual]

Remove the media streams on the connections.

virtual BOOL OpalCall::IsMediaBypassPossible ( const OpalConnection connection,
unsigned  sessionID 
) const [virtual]

See if the media can bypass the local host.

Parameters:
connection  Source connection
sessionID  Session ID for media channel

virtual void OpalCall::OnUserInputString ( OpalConnection connection,
const PString &  value 
) [virtual]

Call back for remote endpoint has sent user input as a string.

The default behaviour call OpalConnection::SetUserInput() which saves the value so the GetUserInput() function can return it.

Parameters:
connection  Connection input has come from
value  String value of indication

virtual void OpalCall::OnUserInputTone ( OpalConnection connection,
char  tone,
int  duration 
) [virtual]

Call back for remote enpoint has sent user input as tones. If duration is zero then this indicates the beginning of the tone. If duration is non-zero then it indicates the end of the tone output.

The default behaviour calls connection.OnUserInputString(tone) if there are no other connections in the call, otherwise it calls SendUserInputTone() for each of the other connections in the call.

Parameters:
connection  Connection input has come from
tone  Tone received
duration  Duration of tone in milliseconds

OpalManager& OpalCall::GetManager (  )  const [inline]

Get the manager for this endpoint.

const PString& OpalCall::GetToken (  )  const [inline]

Get the internal identifier token for this connection.

const PString& OpalCall::GetPartyA (  )  const [inline]

Get the A party for the call. Note this will be available even after the A party connection has been released from the call.

const PString& OpalCall::GetPartyB (  )  const [inline]

Get the B party for the call. Note this will be available even after the B party connection has been released from the call. Also this will only be the first B party if the object represents a conference call with more that 2 parties.

void OpalCall::SetPartyB ( const PString &  b  )  [inline]

Set the B party for a call. This is used when we wish to make two outgoing calls and bridge them. When the OnConnected() call back occurs for the first outgoing call (the A-Party) then this variable ised to make teh second outgoing call.

const PTime& OpalCall::GetStartTime (  )  const [inline]

Get the time the call started.

virtual BOOL OpalCall::StartRecording ( const PFilePath &  fn  )  [virtual]

virtual void OpalCall::StopRecording (  )  [virtual]

void OpalCall::OnStopRecordAudio ( const PString &  callToken  ) 

OpalCall::OpalConnection::OpalConnection ( OpalCall ,
OpalEndPoint ,
const PString &  ,
unsigned  int,
OpalConnection::StringOptions  
) [protected]


Member Data Documentation

OpalManager& OpalCall::manager [protected]

PString OpalCall::myToken [protected]

PString OpalCall::partyA [protected]

PString OpalCall::partyB [protected]

PTime OpalCall::startTime [protected]

BOOL OpalCall::isEstablished [protected]

BOOL OpalCall::isClearing [protected]

OpalConnection::CallEndReason OpalCall::callEndReason [protected]

PSafeList<OpalConnection> OpalCall::connectionsActive [protected]

PSyncPoint* OpalCall::endCallSyncPoint [protected]


The documentation for this class was generated from the following file:
Generated on Fri Mar 7 06:34:04 2008 for OPAL by  doxygen 1.5.1