# SIPConnection Class Reference

`#include <sipcon.h>`

Inheritance diagram for SIPConnection:

[legend]
Collaboration diagram for SIPConnection:
[legend]

## Protocol handling functions

enum | TypeOfINVITE { IsNewINVITE, IsDuplicateINVITE, IsReINVITE, IsLoopedINVITE }
virtual void | OnTransactionFailed (SIPTransaction &transaction)
virtual void | OnReceivedPDU (SIP_PDU &pdu)
virtual void | OnReceivedINVITE (SIP_PDU &pdu)
virtual void | OnReceivedReINVITE (SIP_PDU &pdu)
virtual void | OnReceivedACK (SIP_PDU &pdu)
virtual void | OnReceivedOPTIONS (SIP_PDU &pdu)
virtual void | OnReceivedNOTIFY (SIP_PDU &pdu)
virtual void | OnAllowedEventNotify (const PString &eventName)
virtual void | OnReceivedREFER (SIP_PDU &pdu)
virtual void | OnReceivedINFO (SIP_PDU &pdu)
virtual void | OnReceivedPING (SIP_PDU &pdu)
virtual void | OnReceivedPRACK (SIP_PDU &pdu)
virtual void | OnReceivedBYE (SIP_PDU &pdu)
virtual void | OnReceivedCANCEL (SIP_PDU &pdu)
virtual bool | OnReceivedResponseToINVITE (SIPTransaction &transaction, SIP_PDU &response)
virtual void | OnReceivedResponse (SIPTransaction &transaction, SIP_PDU &response)
virtual void | OnReceivedTrying (SIPTransaction &transaction, SIP_PDU &response)
virtual void | OnReceivedRinging (SIPTransaction &transaction, SIP_PDU &pdu)
virtual void | OnReceivedSessionProgress (SIPTransaction &transaction, SIP_PDU &pdu)
virtual PBoolean | OnReceivedAuthenticationRequired (SIPTransaction &transaction, SIP_PDU &response)
virtual void | OnReceivedRedirection (SIP_PDU &pdu)
virtual void | OnReceivedOK (SIPTransaction &transaction, SIP_PDU &response)
virtual void | OnCreatingINVITE (SIPInvite &pdu)
TypeOfINVITE | CheckINVITE (const SIP_PDU &pdu) const
| Indicate if this is a duplicate or multi-path INVITE.
bool | SendOPTIONS (const SIPOptions::Params &params, SIP_PDU *reply=NULL)
bool | SendINFO (const SIPInfo::Params &params, SIP_PDU *reply=NULL)

## Public Types

| IsNewINVITE
| IsDuplicateINVITE
| IsReINVITE
| IsLoopedINVITE
| e_prackDisabled
| e_prackSupported
| e_prackRequired
enum | PRACKMode { e_prackDisabled, e_prackSupported, e_prackRequired }
| Mode for reliable provisional responses. More...

## Public Member Functions

OpalTransportAddress | GetDefaultSDPConnectAddress (WORD port=0) const
SIPEndPoint & | GetEndPoint () const
SIPAuthentication * | GetAuthenticator () const
PRACKMode | GetPRACKMode () const
virtual unsigned | GetAllowedMethods () const
bool | DoesRemoteAllowMethod (SIP_PDU::Methods method) const
virtual PBoolean | OnMediaControlXML (SIP_PDU &pdu)
virtual bool | OnMediaCommand (OpalMediaStream &stream, const OpalMediaCommand &command)
virtual PString | GetAuthID () const
virtual void | OnStartTransaction (SIPTransaction &transaction)
virtual void | OnReceivedMESSAGE (SIP_PDU &pdu)
virtual void | OnReceivedSUBSCRIBE (SIP_PDU &pdu)
PString | GetLocalPartyURL () const
virtual void | PrintOn (ostream &strm) const
Construction
| SIPConnection (const Init &init)
| ~SIPConnection ()
Overrides from OpalConnection
virtual bool | IsNetworkConnection () const
virtual PString | GetPrefixName () const
virtual PString | GetIdentifier () const
virtual void | OnApplyStringOptions ()
| Call back for connection to act on changed string options.
virtual PBoolean | SetUpConnection ()
virtual OpalTransportAddress | GetRemoteAddress () const
virtual PString | GetDestinationAddress ()
virtual PString | GetCalledPartyURL ()
virtual PString | GetAlertingType () const
virtual bool | SetAlertingType (const PString &info)
virtual PString | GetCallInfo () const
virtual bool | TransferConnection (const PString &remoteParty)
virtual bool | Hold (bool fromRemote, bool placeOnHold)
virtual bool | IsOnHold (bool fromRemote)
virtual PBoolean | SetAlerting (const PString &calleeName, PBoolean withMedia)
virtual PBoolean | SetConnected ()
virtual OpalMediaFormatList | GetMediaFormats () const
virtual bool | RequireSymmetricMediaStreams () const
virtual OpalMediaStream * | CreateMediaStream (const OpalMediaFormat &mediaFormat, unsigned sessionID, PBoolean isSource)
virtual OpalMediaStreamPtr | OpenMediaStream (const OpalMediaFormat &mediaFormat, unsigned sessionID, bool isSource)
virtual void | OnClosedMediaStream (const OpalMediaStream &stream)
virtual bool | GetMediaTransportAddresses (const OpalMediaType &mediaType, OpalTransportAddressArray &transports) const
virtual void | OnPatchMediaStream (PBoolean isSource, OpalMediaPatch &patch)
virtual void | OnPauseMediaStream (OpalMediaStream &strm, bool paused)
virtual void | OnReleased ()
virtual PBoolean | ForwardCall (const PString &forwardParty)
virtual SendUserInputModes | GetRealSendUserInputMode () const
virtual PBoolean | SendUserInputString (const PString &value)
PBoolean | SendUserInputTone (char tone, unsigned duration)

## Protected Types

typedef SIPPoolTimer< SIPConnection > | PoolTimer
| eHoldOff
| eRetrieveInProgress
| eHoldOn
| eHoldInProgress
| ReleaseWithBYE
| ReleaseWithCANCEL
| ReleaseWithResponse
| ReleaseWithNothing
| UserInputMethodUnknown
| ReceivedRFC2833
| ReceivedINFO
enum | HoldState { eHoldOff, eRetrieveInProgress, eHoldOn, eHoldInProgress }
enum | { ReleaseWithBYE, ReleaseWithCANCEL, ReleaseWithResponse, ReleaseWithNothing }
enum | { UserInputMethodUnknown, ReceivedRFC2833, ReceivedINFO }

## Protected Member Functions

virtual bool | GarbageCollection ()
void | OnSessionTimeout ()
void | OnInviteResponseRetry ()
void | OnInviteResponseTimeout ()
void | OnInviteCollision ()
virtual bool | OnSendOfferSDP (SDPSessionDescription &sdpOut, bool offerCurrentOnly)
virtual bool | OnSendOfferSDPSession (unsigned sessionID, SDPSessionDescription &sdpOut, bool offerOpenMediaStreamOnly)
virtual bool | OnSendAnswerSDP (SDPSessionDescription &sdpOut)
virtual bool | OnSendAnswerSDP (const SDPSessionDescription &sdpOffer, SDPSessionDescription &sdpAnswer)
virtual bool | OnSendAnswerSDPSession (const SDPSessionDescription &sdpIn, unsigned sessionIndex, SDPSessionDescription &sdpOut)
virtual void | OnReceivedAnswerSDP (SIP_PDU &response, SIPTransaction *transaction)
virtual bool | OnReceivedAnswerSDPSession (SDPSessionDescription &sdp, unsigned sessionId, bool &multipleFormats)
virtual OpalMediaSession * | SetUpMediaSession (const unsigned rtpSessionId, const OpalMediaType &mediaType, const SDPMediaDescription &mediaDescription, OpalTransportAddress &localAddress, bool &remoteChanged)
bool | SendReINVITE (PTRACE_PARAM(const char *msg))
bool | StartPendingReINVITE ()
| PDECLARE_WriteConnectCallback (SIPConnection, WriteINVITE)
virtual void | SendDelayedACK (bool force)
void | OnDelayedAckTimeout ()
virtual bool | SendInviteOK ()
virtual PBoolean | SendInviteResponse (SIP_PDU::StatusCodes code, const SDPSessionDescription *sdp=NULL)
virtual void | AdjustInviteResponse (SIP_PDU &response)
void | UpdateRemoteAddresses ()
void | NotifyDialogState (SIPDialogNotification::States state, SIPDialogNotification::Events eventType=SIPDialogNotification::NoEvent, unsigned eventCode=0)
virtual bool | InviteConferenceParticipant (const PString &conf, const PString &dest)
bool | SetRemoteMediaFormats (SIP_PDU *pdu)
void | OnUserInputInlineRFC2833 (OpalRFC2833Info &info, INT type)

## Protected Attributes

unsigned | m_allowedMethods
PStringSet | m_allowedEvents
HoldState | m_holdToRemote
bool | m_holdFromRemote
PString | m_forwardParty
OpalTransportAddress | m_remoteAddress
SIPURL | m_contactAddress
SIPURL | m_ciscoRemotePartyID
SIP_PDU * | m_lastReceivedINVITE
SIP_PDU * | m_delayedAckInviteResponse
PoolTimer | m_delayedAckTimer
PTimeInterval | m_delayedAckTimeout
SIP_PDU * | m_lastSentAck
time_t | m_sdpSessionId
unsigned | m_sdpVersion
bool | m_needReINVITE
bool | m_handlingINVITE
bool | m_resolveMultipleFormatReINVITE
bool | m_symmetricOpenStream
OpalGloballyUniqueID | m_dialogNotifyId
int | m_appearanceCode
PString | m_alertInfo
PoolTimer | m_sessionTimer
std::map< SIP_PDU::Methods, unsigned > | m_lastRxCSeq
PRACKMode | m_prackMode
bool | m_prackEnabled
unsigned | m_prackSequenceNumber
std::queue< SIP_PDU > | m_responsePackets
PoolTimer | m_responseFailTimer
PoolTimer | m_responseRetryTimer
unsigned | m_responseRetryCount
PoolTimer | m_inviteCollisionTimer
bool | m_referInProgress
PSafeList< SIPTransaction > | m_forkedInvitations
PSafeList< SIPTransaction > | m_pendingInvitations
enum SIPConnection:: { ... } | releaseMethod
OpalMediaFormatList | m_remoteFormatList
OpalMediaFormatList | m_answerFormatList
std::map< std::string, SIP_PDU * > | m_responses
PSafePtr< OpalSIPIMContext > | m_imContext
PSimpleTimer | m_infoPictureFastUpdateTimer
enum SIPConnection:: { ... } | m_receivedUserInputMethod

## Friends

class | SIPInvite
class | SIPTransaction
class | SIP_RTP_Session

## Data Structures

struct | Init

## Detailed Description

Session Initiation Protocol connection.

## Member Typedef Documentation

typedef SIPPoolTimer<SIPConnection> SIPConnection::PoolTimer `[protected]`

## Member Enumeration Documentation

anonymous enum`[protected]`

Enumerator:

  ReleaseWithBYE |
  ReleaseWithCANCEL |
  ReleaseWithResponse |
  ReleaseWithNothing |

anonymous enum`[protected]`

Enumerator:

  UserInputMethodUnknown |
  ReceivedRFC2833 |
  ReceivedINFO |

enum SIPConnection::HoldState `[protected]`

Enumerator:

  eHoldOff |
  eRetrieveInProgress |
  eHoldOn |
  eHoldInProgress |

enum SIPConnection::PRACKMode

Mode for reliable provisional responses.

Enumerator:

  e_prackDisabled | Do not use PRACK if remote asks for 100rel in Supported field, refuse call with 420 Bad Extension if 100rel is in Require header field.
  e_prackSupported |
  e_prackRequired | Add 100rel to Require header in outgoing INVITE. For incoming INVITE enable PRACK is either Supported or Require headers include 100rel, fail the call with a 421 Extension Required if missing.

enum SIPConnection::TypeOfINVITE

Enumerator:

  IsNewINVITE |
  IsDuplicateINVITE |
  IsReINVITE |
  IsLoopedINVITE |

## Constructor & Destructor Documentation

SIPConnection::SIPConnection | ( | const Init & | init | ) |

Create a new connection.

Parameters:

  init | Initialisation parameters

SIPConnection::~SIPConnection | ( |  | ) |

Destroy connection.

## Member Function Documentation

virtual void SIPConnection::AdjustInviteResponse | ( | SIP_PDU & | response | ) | `[protected, virtual]`

TypeOfINVITE SIPConnection::CheckINVITE | ( | const SIP_PDU & | pdu | ) | const

Indicate if this is a duplicate or multi-path INVITE.

virtual OpalMediaStream* SIPConnection::CreateMediaStream | ( | const OpalMediaFormat & | mediaFormat,
|  | unsigned | sessionID,
|  | PBoolean | isSource |
| ) |  |  | `[virtual]`

Create a new media stream.

Parameters:

  mediaFormat | Media format for stream
  sessionID | Session number for stream
  isSource | Is a source stream

Reimplemented from OpalRTPConnection.

bool SIPConnection::DoesRemoteAllowMethod | ( | SIP_PDU::Methods | method | ) | const`[inline]`

REturn true if remote allows the method.

virtual PBoolean SIPConnection::ForwardCall | ( | const PString & | forwardParty | ) | `[virtual]`

Forward incoming connection to the specified address. This would typically be called from within the OnIncomingConnection() function when an application wishes to redirect an unwanted incoming call.

The return value is true if the call is to be forwarded, false otherwise. Note that if the call is forwarded, the current connection is cleared with the ended call code set to EndedByCallForwarded.

Parameters:

  forwardParty | Party to forward call to.

Reimplemented from OpalConnection.

virtual bool SIPConnection::GarbageCollection | ( |  | ) | `[protected, virtual]`

Execute garbage collection for endpoint. Returns true if all garbage has been collected. Default behaviour deletes the objects in the connectionsActive list.

Reimplemented from OpalRTPConnection.

virtual PString SIPConnection::GetAlertingType | ( |  | ) | const`[virtual]`

Get alerting type information of an incoming call. The type of "distinctive ringing" for the call. The string is protocol dependent, so the caller would need to be aware of the type of call being made. Some protocols may ignore the field completely.

For SIP this corresponds to the string contained in the "Alert-Info" header field of the INVITE. This is typically a URI for the ring file.

For H.323 this must be a string representation of an integer from 0 to 7 which will be contained in the Q.931 SIGNAL (0x34) Information Element.

Default behaviour returns an empty string.

Reimplemented from OpalConnection.

virtual unsigned SIPConnection::GetAllowedMethods | ( |  | ) | const`[virtual]`

Return a bit mask of the allowed local SIP methods.

Reimplemented from SIPTransactionOwner.

SIPAuthentication* SIPConnection::GetAuthenticator | ( |  | ) | const`[inline]`

Reimplemented from SIPTransactionOwner.

virtual PString SIPConnection::GetAuthID | ( |  | ) | const`[virtual]`

Implements SIPTransactionOwner.

virtual PString SIPConnection::GetCalledPartyURL | ( |  | ) | `[virtual]`

Get the fulll URL being indicated by the remote for incoming calls. This may not have any relation to the local name of the endpoint.

The default behaviour returns GetDestinationAddress() normalised to a URL. The remote may provide a full URL, if it does not then the prefix for the endpoint is prepended to the destination address.

Reimplemented from OpalConnection.

virtual PString SIPConnection::GetCallInfo | ( |  | ) | const`[virtual]`

Get call information of an incoming call. This is protocol dependent information provided about the call. The details are outside the scope of this help.

For SIP this corresponds to the string contained in the "Call-Info" header field of the INVITE.

Reimplemented from OpalConnection.

OpalTransportAddress SIPConnection::GetDefaultSDPConnectAddress | ( | WORD | port = `0` | ) | const

virtual PString SIPConnection::GetDestinationAddress | ( |  | ) | `[virtual]`

Get the destination address of an incoming connection. This will, for example, collect a phone number from a POTS line, or get the fields from the H.225 SETUP pdu in a H.323 connection.

The default behaviour for sip returns the request URI in the INVITE.

Reimplemented from OpalConnection.

SIPEndPoint& SIPConnection::GetEndPoint | ( |  | ) | const`[inline]`

Reimplemented from SIPTransactionOwner.

virtual PString SIPConnection::GetIdentifier | ( |  | ) | const`[virtual]`

Get the protocol-specific unique identifier for this connection.

Reimplemented from OpalConnection.

PString SIPConnection::GetLocalPartyURL | ( |  | ) | const`[virtual]`

Get the local name/alias.

Reimplemented from OpalConnection.

virtual OpalMediaFormatList SIPConnection::GetMediaFormats | ( |  | ) | const`[virtual]`

Get the data formats this endpoint is capable of operating in.

Reimplemented from OpalConnection.

virtual bool SIPConnection::GetMediaTransportAddresses | ( | const OpalMediaType & | mediaType,
|  | OpalTransportAddressArray & | transports |
| ) |  |  | const`[virtual]`

Get transports for the media session on the connection. This is primarily used by the media bypass feature controlled by the OpalManager::GetMediaTransferMode() function. It allows one side of the call to get the transport address of the media on the other side, so it can pass it on, bypassing the local host.

Returns:
  true if a transport address is available and may be used to pass on to a remote system for direct access.

Parameters:

  mediaType | Media type for session to return information
  transports | Information on media session

Reimplemented from OpalRTPConnection.

PRACKMode SIPConnection::GetPRACKMode | ( |  | ) | const`[inline]`

Get active PRACK mode. See PRACKMode enum for details.

virtual PString SIPConnection::GetPrefixName | ( |  | ) | const`[virtual]`

Get this connections protocol prefix for URLs.

Reimplemented from OpalConnection.

virtual SendUserInputModes SIPConnection::GetRealSendUserInputMode | ( |  | ) | const`[virtual]`

Get the real user input indication transmission mode. This will return the user input mode that will actually be used for transmissions. It will be the value of GetSendUserInputMode() provided the remote endpoint is capable of that mode.

Reimplemented from OpalConnection.

virtual OpalTransportAddress SIPConnection::GetRemoteAddress | ( |  | ) | const`[inline, virtual]`

Get the remote transport address

Reimplemented from OpalConnection.

virtual bool SIPConnection::Hold | ( | bool | fromRemote,
|  | bool | placeOnHold |
| ) |  |  | `[virtual]`

Put the current connection on hold, suspending all media streams. The `fromRemote` parameter indicates if we a putting the remote on hold (false) or it is a request for the remote to put us on hold (true).

The /p placeOnHold parameter indicates of teh command/request is for going on hold or retrieving from hold.

Parameters:

  fromRemote | Flag for if remote has us on hold, or we have them
  placeOnHold | Flag for setting on or off hold

Reimplemented from OpalConnection.

virtual bool SIPConnection::InviteConferenceParticipant | ( | const PString & | conf,
|  | const PString & | dest |
| ) |  |  | `[protected, virtual]`

virtual bool SIPConnection::IsNetworkConnection | ( |  | ) | const`[inline, virtual]`

Get indication of connection being to a "network". This indicates the if the connection may be regarded as a "network" connection. The distinction is about if there is a concept of a "remote" party being connected to and is best described by example: sip, h323, iax and pstn are all "network" connections as they connect to something "remote". While pc, pots and ivr are not as the entity being connected to is intrinsically local.

Implements OpalConnection.

virtual bool SIPConnection::IsOnHold | ( | bool | fromRemote | ) | `[virtual]`

Return true if the current connection is on hold. The `fromRemote` parameter indicates if we are testing if the remote system has us on hold, or we have them on hold.

Parameters:

  fromRemote | Flag for if remote has us on hold, or we have them

Reimplemented from OpalConnection.

void SIPConnection::NotifyDialogState | ( | SIPDialogNotification::States | state,
|  | SIPDialogNotification::Events | eventType = `SIPDialogNotification::NoEvent`,
|  | unsigned | eventCode = `0` |
| ) |  |  | `[protected]`

virtual void SIPConnection::OnAllowedEventNotify | ( | const PString & | eventName | ) | `[virtual]`

Callback function on receipt of an allowed NOTIFY message. Allowed events are determined by the m_allowedEvents member variable.

Parameters:

  eventName | Name of event

virtual void SIPConnection::OnApplyStringOptions | ( |  | ) | `[virtual]`

Call back for connection to act on changed string options.

Reimplemented from OpalConnection.

virtual void SIPConnection::OnClosedMediaStream | ( | const OpalMediaStream & | stream | ) | `[virtual]`

Call back for closed a media stream.

The default behaviour calls the OpalEndPoint function of the same name.

Parameters:

  stream | Media stream being closed

Reimplemented from OpalConnection.

virtual void SIPConnection::OnCreatingINVITE | ( | SIPInvite & | pdu | ) | `[virtual]`

Handle a sending INVITE request

void SIPConnection::OnDelayedAckTimeout | ( |  | ) | `[protected]`

void SIPConnection::OnInviteCollision | ( |  | ) | `[protected]`

void SIPConnection::OnInviteResponseRetry | ( |  | ) | `[protected]`

void SIPConnection::OnInviteResponseTimeout | ( |  | ) | `[protected]`

virtual bool SIPConnection::OnMediaCommand | ( | OpalMediaStream & | stream,
|  | const OpalMediaCommand & | command |
| ) |  |  | `[virtual]`

Callback for media commands. Calls the SendIntraFrameRequest on the rtp session

Returns:
  true if command is handled.

Parameters:

  stream | Stream command executed on
  command | Media command being executed

Reimplemented from OpalRTPConnection.

virtual PBoolean SIPConnection::OnMediaControlXML | ( | SIP_PDU & | pdu | ) | `[virtual]`

Call when SIP INFO of type application/media_control+xml is received.

Return false if default reponse of Failure_UnsupportedMediaType is to be returned

virtual void SIPConnection::OnPatchMediaStream | ( | PBoolean | isSource,
|  | OpalMediaPatch & | patch |
| ) |  |  | `[virtual]`

Call back when patching a media stream. This function is called when a connection has created a new media patch between two streams. This is usually called twice per media patch, once for the source stream and once for the sink stream.

Note this is not called within the context of the patch thread and is called before that thread has started.

Parameters:

  isSource | Is source/sink call
  patch | New patch

Reimplemented from OpalRTPConnection.

virtual void SIPConnection::OnPauseMediaStream | ( | OpalMediaStream & | strm,
|  | bool | paused |
| ) |  |  | `[virtual]`

Pause media streams for connection.

Parameters:

  strm | Media stream paused/un-paused
  paused | Flag for pausing/un-pausing

Reimplemented from OpalConnection.

virtual void SIPConnection::OnReceivedACK | ( | SIP_PDU & | pdu | ) | `[virtual]`

Handle an incoming ACK PDU

virtual void SIPConnection::OnReceivedAnswerSDP | ( | SIP_PDU & | response,
|  | SIPTransaction * | transaction |
| ) |  |  | `[protected, virtual]`

virtual bool SIPConnection::OnReceivedAnswerSDPSession | ( | SDPSessionDescription & | sdp,
|  | unsigned | sessionId,
|  | bool & | multipleFormats |
| ) |  |  | `[protected, virtual]`

virtual PBoolean SIPConnection::OnReceivedAuthenticationRequired | ( | SIPTransaction & | transaction,
|  | SIP_PDU & | response |
| ) |  |  | `[virtual]`

Handle an incoming Proxy Authentication Required response PDU Returns: true if handled, if false is returned connection is released.

virtual void SIPConnection::OnReceivedBYE | ( | SIP_PDU & | pdu | ) | `[virtual]`

Handle an incoming BYE PDU

virtual void SIPConnection::OnReceivedCANCEL | ( | SIP_PDU & | pdu | ) | `[virtual]`

Handle an incoming CANCEL PDU

virtual void SIPConnection::OnReceivedINFO | ( | SIP_PDU & | pdu | ) | `[virtual]`

Handle an incoming INFO PDU

virtual void SIPConnection::OnReceivedINVITE | ( | SIP_PDU & | pdu | ) | `[virtual]`

Handle an incoming INVITE request

virtual void SIPConnection::OnReceivedMESSAGE | ( | SIP_PDU & | pdu | ) | `[virtual]`

virtual void SIPConnection::OnReceivedNOTIFY | ( | SIP_PDU & | pdu | ) | `[virtual]`

Handle an incoming NOTIFY PDU

virtual void SIPConnection::OnReceivedOK | ( | SIPTransaction & | transaction,
|  | SIP_PDU & | response |
| ) |  |  | `[virtual]`

Handle an incoming OK response PDU. This actually gets any PDU of the class 2xx not just 200.

virtual void SIPConnection::OnReceivedOPTIONS | ( | SIP_PDU & | pdu | ) | `[virtual]`

Handle an incoming OPTIONS PDU

virtual void SIPConnection::OnReceivedPDU | ( | SIP_PDU & | pdu | ) | `[virtual]`

Handle an incoming SIP PDU that has been full decoded

virtual void SIPConnection::OnReceivedPING | ( | SIP_PDU & | pdu | ) | `[virtual]`

Handle an incoming PING PDU

virtual void SIPConnection::OnReceivedPRACK | ( | SIP_PDU & | pdu | ) | `[virtual]`

Handle an incoming PRACK PDU

virtual void SIPConnection::OnReceivedRedirection | ( | SIP_PDU & | pdu | ) | `[virtual]`

Handle an incoming redirect response PDU

virtual void SIPConnection::OnReceivedREFER | ( | SIP_PDU & | pdu | ) | `[virtual]`

Handle an incoming REFER PDU

virtual void SIPConnection::OnReceivedReINVITE | ( | SIP_PDU & | pdu | ) | `[virtual]`

Handle an incoming Re-INVITE request

virtual void SIPConnection::OnReceivedResponse | ( | SIPTransaction & | transaction,
|  | SIP_PDU & | response |
| ) |  |  | `[virtual]`

Handle an incoming response PDU.

Reimplemented from SIPTransactionOwner.

virtual bool SIPConnection::OnReceivedResponseToINVITE | ( | SIPTransaction & | transaction,
|  | SIP_PDU & | response |
| ) |  |  | `[virtual]`

Handle an incoming response PDU to our INVITE. Note this is called before th ACK is sent and thus should do as little as possible. All the hard work (SDP processing etc) should be in the usual OnReceivedResponse().

virtual void SIPConnection::OnReceivedRinging | ( | SIPTransaction & | transaction,
|  | SIP_PDU & | pdu |
| ) |  |  | `[virtual]`

Handle an incoming Ringing response PDU

virtual void SIPConnection::OnReceivedSessionProgress | ( | SIPTransaction & | transaction,
|  | SIP_PDU & | pdu |
| ) |  |  | `[virtual]`

Handle an incoming Session Progress response PDU

virtual void SIPConnection::OnReceivedSUBSCRIBE | ( | SIP_PDU & | pdu | ) | `[virtual]`

virtual void SIPConnection::OnReceivedTrying | ( | SIPTransaction & | transaction,
|  | SIP_PDU & | response |
| ) |  |  | `[virtual]`

Handle an incoming Trying response PDU

virtual void SIPConnection::OnReleased | ( |  | ) | `[virtual]`

Clean up the termination of the connection. This function can do any internal cleaning up and waiting on background threads that may be using the connection object.

Note that there is not a one to one relationship with the OnEstablishedConnection() function. This function may be called without that function being called. For example if SetUpConnection() was used but the call never completed.

Classes that override this function should make sure they call the ancestor version for correct operation.

An application will not typically call this function as it is used by the OpalManager during a release of the connection.

The default behaviour calls the OpalEndPoint function of the same name.

Reimplemented from OpalRTPConnection.

virtual bool SIPConnection::OnSendAnswerSDP | ( | const SDPSessionDescription & | sdpOffer,
|  | SDPSessionDescription & | sdpAnswer |
| ) |  |  | `[protected, virtual]`

virtual bool SIPConnection::OnSendAnswerSDP | ( | SDPSessionDescription & | sdpOut | ) | `[protected, virtual]`

virtual bool SIPConnection::OnSendAnswerSDPSession | ( | const SDPSessionDescription & | sdpIn,
|  | unsigned | sessionIndex,
|  | SDPSessionDescription & | sdpOut |
| ) |  |  | `[protected, virtual]`

virtual bool SIPConnection::OnSendOfferSDP | ( | SDPSessionDescription & | sdpOut,
|  | bool | offerCurrentOnly |
| ) |  |  | `[protected, virtual]`

virtual bool SIPConnection::OnSendOfferSDPSession | ( | unsigned | sessionID,
|  | SDPSessionDescription & | sdpOut,
|  | bool | offerOpenMediaStreamOnly |
| ) |  |  | `[protected, virtual]`

void SIPConnection::OnSessionTimeout | ( |  | ) | `[protected]`

virtual void SIPConnection::OnStartTransaction | ( | SIPTransaction & | transaction | ) | `[virtual]`

Reimplemented from SIPTransactionOwner.

virtual void SIPConnection::OnTransactionFailed | ( | SIPTransaction & | transaction | ) | `[virtual]`

Handle the fail of a transaction we initiated.

Reimplemented from SIPTransactionOwner.

void SIPConnection::OnUserInputInlineRFC2833 | ( | OpalRFC2833Info & | info,
|  | INT | type |
| ) |  |  | `[protected]`

virtual OpalMediaStreamPtr SIPConnection::OpenMediaStream | ( | const OpalMediaFormat & | mediaFormat,
|  | unsigned | sessionID,
|  | bool | isSource |
| ) |  |  | `[virtual]`

Open source or sink media stream for session.

Parameters:

  mediaFormat | Media format to open
  sessionID | Session to start stream on
  isSource | Stream is a source/sink

Reimplemented from OpalConnection.

SIPConnection::PDECLARE_WriteConnectCallback | ( | SIPConnection | ,
|  | WriteINVITE |  |
| ) |  |  | `[protected]`

virtual void SIPConnection::PrintOn | ( | ostream & | strm | ) | const`[inline, virtual]`

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

Reimplemented from OpalConnection.

virtual bool SIPConnection::RequireSymmetricMediaStreams | ( |  | ) | const`[virtual]`

Indicate connection requires symmetric media. Default behaviour returns false.

Reimplemented from OpalConnection.

virtual void SIPConnection::SendDelayedACK | ( | bool | force | ) | `[protected, virtual]`

bool SIPConnection::SendINFO | ( | const SIPInfo::Params & | params,
|  | SIP_PDU * | reply = `NULL` |
| ) |  |  |

Send an INFO command within this calls dialog. Note if `reply` is non-NULL, this function will block until the transaction completes. Care must be executed in this case that no deadlocks occur.

Parameters:

  params | Parameters for OPTIONS command
  reply | Reply to message

virtual bool SIPConnection::SendInviteOK | ( |  | ) | `[protected, virtual]`

virtual PBoolean SIPConnection::SendInviteResponse | ( | SIP_PDU::StatusCodes | code,
|  | const SDPSessionDescription * | sdp = `NULL` |
| ) |  |  | `[protected, virtual]`

bool SIPConnection::SendOPTIONS | ( | const SIPOptions::Params & | params,
|  | SIP_PDU * | reply = `NULL` |
| ) |  |  |

Send an OPTIONS command within this calls dialog. Note if `reply` is non-NULL, this function will block until the transaction completes. Care must be executed in this case that no deadlocks occur.

Parameters:

  params | Parameters for OPTIONS command
  reply | Reply to message

bool SIPConnection::SendReINVITE | ( | PTRACE_PARAM(const char *msg) |  | ) | `[protected]`

virtual PBoolean SIPConnection::SendUserInputString | ( | const PString & | value | ) | `[virtual]`

Send a user input indication to the remote endpoint. This is for sending arbitrary strings as user indications.

The default behaviour is to call SendUserInputTone() for each character in the string.

Parameters:

  value | String value of indication

Reimplemented from OpalConnection.

PBoolean SIPConnection::SendUserInputTone | ( | char | tone,
|  | unsigned | duration |
| ) |  |  | `[virtual]`

Send a user input indication to the remote endpoint. This sends DTMF emulation user input. If something more sophisticated than the simple tones that can be sent using the SendUserInput() function.

A duration of zero indicates that no duration is to be indicated. A non-zero logical channel indicates that the tone is to be syncronised with the logical channel at the rtpTimestamp value specified.

The tone parameter must be one of "0123456789#*ABCD!" where '!' indicates a hook flash. If tone is a ' ' character then a signalUpdate PDU is sent that updates the last tone indication sent. See the H.245 specifcation for more details on this.

The default behaviour sends the tone using RFC2833.

Reimplemented from OpalRTPConnection.

virtual PBoolean SIPConnection::SetAlerting | ( | const PString & | calleeName,
|  | PBoolean | withMedia |
| ) |  |  | `[virtual]`

Indicate to remote endpoint an alert is in progress. If this is an incoming connection and the AnswerCallResponse is in a AnswerCallDeferred or AnswerCallPending state, then this function is used to indicate to that endpoint that an alert is in progress. This is usually due to another connection which is in the call (the B party) has received an OnAlerting() indicating that its remote endpoint is "ringing".

The default behaviour does nothing.

Parameters:

  calleeName | Name of endpoint being alerted.
  withMedia | Flag to alert with/without media

Reimplemented from OpalConnection.

virtual bool SIPConnection::SetAlertingType | ( | const PString & | info | ) | `[virtual]`

Set alerting type information for outgoing call. The type of "distinctive ringing" for the call. The string is protocol dependent, so the caller would need to be aware of the type of call being made. Some protocols may ignore the field completely.

For SIP this corresponds to the string contained in the "Alert-Info" header field of the INVITE. This is typically a URI for the ring file.

For H.323 this must be a string representation of an integer from 0 to 7 which will be contained in the Q.931 SIGNAL (0x34) Information Element.

Default behaviour returns false.

Reimplemented from OpalConnection.

virtual PBoolean SIPConnection::SetConnected | ( |  | ) | `[virtual]`

Indicate to remote endpoint we are connected.

The default behaviour does nothing.

Reimplemented from OpalConnection.

bool SIPConnection::SetRemoteMediaFormats | ( | SIP_PDU * | pdu | ) | `[protected]`

virtual PBoolean SIPConnection::SetUpConnection | ( |  | ) | `[virtual]`

Start an outgoing connection. This function will initiate the connection to the remote entity, for example in H.323 it sends a SETUP, in SIP it sends an INVITE etc.

The default behaviour is .

Reimplemented from OpalConnection.

virtual OpalMediaSession* SIPConnection::SetUpMediaSession | ( | const unsigned | rtpSessionId,
|  | const OpalMediaType & | mediaType,
|  | const SDPMediaDescription & | mediaDescription,
|  | OpalTransportAddress & | localAddress,
|  | bool & | remoteChanged |
| ) |  |  | `[protected, virtual]`

bool SIPConnection::StartPendingReINVITE | ( |  | ) | `[protected]`

virtual bool SIPConnection::TransferConnection | ( | const PString & | remoteParty | ) | `[virtual]`

Initiate the transfer of an existing call (connection) to a new remote party.

A REFER command is sent to the remote endpoint to cause it to move the call it has with this endpoint to a new address. This call will, in the end, be cleared. The OnTransferNotify() function can be used to monitor the progress of the transfer in case it fails.

If remoteParty is a valid call token, then this is short hand for the REFER to the remote endpoint of this call to do an INVITE with Replaces header to the remote party of the supplied tokens call. This is used for consultation transfer where A calls B, B holds A, B calls C, B transfers A to C. The last step is a REFER to A with call details of C that are extracted from the B to C call leg. This short cut is possible because A nd C may be other endpoints but both B's are in this instance of OPAL.

In the end, both calls are cleared. The OnTransferNotify() function can be used to monitor the progress of the transfer in case it fails.

Parameters:

  remoteParty | Remote party to transfer the existing call to

Reimplemented from OpalConnection.

void SIPConnection::UpdateRemoteAddresses | ( |  | ) | `[protected]`

## Friends And Related Function Documentation

friend class SIP_RTP_Session`[friend]`

friend class SIPInvite `[friend]`

friend class SIPTransaction `[friend]`

Reimplemented from SIPTransactionOwner.

## Field Documentation

PString SIPConnection::m_alertInfo `[protected]`

PStringSet SIPConnection::m_allowedEvents `[protected]`

unsigned SIPConnection::m_allowedMethods `[protected]`

OpalMediaFormatList SIPConnection::m_answerFormatList `[protected]`

int SIPConnection::m_appearanceCode `[protected]`

SIPURL SIPConnection::m_ciscoRemotePartyID `[protected]`

SIPURL SIPConnection::m_contactAddress `[protected]`

SIP_PDU* SIPConnection::m_delayedAckInviteResponse `[protected]`

PTimeInterval SIPConnection::m_delayedAckTimeout `[protected]`

PoolTimer SIPConnection::m_delayedAckTimer `[protected]`

OpalGloballyUniqueID SIPConnection::m_dialogNotifyId `[protected]`

PSafeList<SIPTransaction> SIPConnection::m_forkedInvitations `[protected]`

PString SIPConnection::m_forwardParty `[protected]`

bool SIPConnection::m_handlingINVITE `[protected]`

bool SIPConnection::m_holdFromRemote `[protected]`

HoldState SIPConnection::m_holdToRemote `[protected]`

PSafePtr<OpalSIPIMContext> SIPConnection::m_imContext `[protected]`

PSimpleTimer SIPConnection::m_infoPictureFastUpdateTimer `[protected]`

PoolTimer SIPConnection::m_inviteCollisionTimer `[protected]`

SIP_PDU* SIPConnection::m_lastReceivedINVITE `[protected]`

std::map<SIP_PDU::Methods, unsigned> SIPConnection::m_lastRxCSeq `[protected]`

SIP_PDU* SIPConnection::m_lastSentAck `[protected]`

bool SIPConnection::m_needReINVITE `[protected]`

PSafeList<SIPTransaction> SIPConnection::m_pendingInvitations `[protected]`

bool SIPConnection::m_prackEnabled `[protected]`

PRACKMode SIPConnection::m_prackMode `[protected]`

unsigned SIPConnection::m_prackSequenceNumber `[protected]`

enum { ... } SIPConnection::m_receivedUserInputMethod `[protected]`

bool SIPConnection::m_referInProgress `[protected]`

OpalTransportAddress SIPConnection::m_remoteAddress `[protected]`

OpalMediaFormatList SIPConnection::m_remoteFormatList `[protected]`

bool SIPConnection::m_resolveMultipleFormatReINVITE `[protected]`

PoolTimer SIPConnection::m_responseFailTimer `[protected]`

std::queue<SIP_PDU> SIPConnection::m_responsePackets `[protected]`

unsigned SIPConnection::m_responseRetryCount `[protected]`

PoolTimer SIPConnection::m_responseRetryTimer `[protected]`

std::map<std::string, SIP_PDU *> SIPConnection::m_responses `[protected]`

time_t SIPConnection::m_sdpSessionId `[protected]`

unsigned SIPConnection::m_sdpVersion `[protected]`

PoolTimer SIPConnection::m_sessionTimer `[protected]`

bool SIPConnection::m_symmetricOpenStream `[protected]`

enum { ... } SIPConnection::releaseMethod `[protected]`

The documentation for this class was generated from the following file:

- sipcon.h