OPAL
Version 3.18.8
|
#include <sipcon.h>
Data Structures | |
struct | Init |
Public Types | |
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) |
virtual PString | GetMediaInterface () |
virtual OpalTransportAddress | GetRemoteMediaAddress () |
Construction | |
SIPConnection (const Init &init) | |
~SIPConnection () | |
Overrides from OpalConnection | |
virtual PString | GetPrefixName () const |
virtual PString | GetIdentifier () const |
virtual void | OnApplyStringOptions () |
Call back for connection to act on changed string options. More... | |
virtual PBoolean | SetUpConnection () |
virtual OpalTransportAddress | GetRemoteAddress () const |
virtual PString | GetRemoteIdentity () const |
virtual PString | GetDestinationAddress () |
virtual PString | GetCalledPartyURL () |
virtual PMultiPartList | GetExtraCallInfo () const |
virtual PString | GetLocalPartyURL () const |
virtual PString | GetAlertingType () const |
virtual bool | SetAlertingType (const PString &info) |
virtual PString | GetCallInfo () const |
virtual PString | GetSupportedFeatures () const |
virtual bool | TransferConnection (const PString &remoteParty) |
virtual PBoolean | SetAlerting (const PString &calleeName, PBoolean withMedia) |
virtual PBoolean | SetConnected () |
virtual OpalMediaFormatList | GetMediaFormats () const |
virtual bool | RequireSymmetricMediaStreams () const |
virtual OpalMediaCryptoSuite::KeyExchangeModes | GetMediaCryptoKeyExchangeModes () 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 (OpalConnection &otherConnection, unsigned sessionId, 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) |
![]() | |
SIPTransactionOwner (PSafeObject &object, SIPEndPoint &endpoint) | |
virtual | ~SIPTransactionOwner () |
virtual PString | GetPassword () const |
void | FinaliseForking (SIPTransaction &transaction, SIP_PDU &response) |
bool | CleanPendingTransactions () |
void | AbortPendingTransactions (bool all=true) |
virtual SIP_PDU::StatusCodes | StartTransaction (const OpalTransport::WriteConnectCallback &function) |
SIP_PDU::StatusCodes | SwitchTransportProto (const char *proto, SIP_PDU *pdu) |
SIP_PDU::StatusCodes | HandleAuthentication (const SIP_PDU &response) |
SIPEndPoint & | GetEndPoint () const |
OpalTransportAddress | GetRemoteTransportAddress () const |
const SIPURL & | GetRequestURI () const |
const SIPURL & | GetRemoteURI () const |
const SIPURL & | GetProxy () const |
const PString & | GetInterface () const |
PINDEX | GetDNSEntry () const |
SIPAuthentication * | GetAuthenticator () const |
SIPDialogContext & | GetDialog () |
const SIPDialogContext & | GetDialog () const |
Protected Types | |
enum | { ReleaseWithBYE, ReleaseWithCANCEL, ReleaseWithResponse, ReleaseWithNothing } |
enum | { eNoRemoteRefer, eReferStarted, eReferNotifyConfirmed } |
enum | { UserInputMethodUnknown, ReceivedRFC2833, ReceivedINFO } |
typedef SIPPoolTimer < SIPConnection > | PoolTimer |
Protected Member Functions | |
virtual bool | GarbageCollection () |
void | OnSessionTimeout () |
void | OnInviteResponseRetry () |
void | OnInviteResponseTimeout () |
void | OnInviteCollision () |
void | OnDelayedRefer () |
virtual bool | AllowMusicOnHold () const |
virtual bool | OnHoldStateChanged (bool placeOnHold) |
virtual void | OnMediaStreamOpenFailed (bool rx) |
void | OnReceivedAlertingResponse (SIPTransaction &transaction, SIP_PDU &response) |
bool | InternalSetConnected (bool transfer) |
virtual bool | OnSendAnswer (SIP_PDU::StatusCodes response, bool transfer) |
virtual bool | OnReceivedAnswer (SIP_PDU &response, SIPTransaction *transaction) |
bool | SendReINVITE (PTRACE_PARAM(const char *msg,) int operation=0) |
bool | StartPendingReINVITE () |
PDECLARE_WriteConnectCallback (SIPConnection, WriteINVITE) | |
virtual bool | SendDelayedACK (bool force) |
void | OnDelayedAckTimeout () |
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) |
PSafePtr< SIPConnection > | GetB2BUA () |
bool | ConsultationTransfer (SIPConnection &referee, SIPRefer::ReferSubMode referSubMode, bool useIdentity) |
int | SetRemoteMediaFormatsFromPDU (SIP_PDU &pdu) |
void | OnUserInputInlineRFC2833 (OpalRFC2833Info &info, OpalRFC2833Proto::NotifyState state) |
![]() | |
PDECLARE_MUTEX (m_forkMutex) | |
Friends | |
class | SIPInvite |
class | SIPTransaction |
class | SIP_RTP_Session |
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. More... | |
bool | SendOPTIONS (const SIPOptions::Params ¶ms, SIP_PDU *reply=NULL) |
bool | SendINFO (const SIPInfo::Params ¶ms, SIP_PDU *reply=NULL) |
virtual bool | OnReceivedInfoPackage (const PString &package, const PMultiPartList &content) |
Session Initiation Protocol connection.
|
protected |
|
protected |
Mode for reliable provisional responses.
SIPConnection::SIPConnection | ( | const Init & | init | ) |
Create a new connection.
init | Initialisation parameters |
SIPConnection::~SIPConnection | ( | ) |
Destroy connection.
|
protectedvirtual |
|
protectedvirtual |
TypeOfINVITE SIPConnection::CheckINVITE | ( | const SIP_PDU & | pdu | ) | const |
Indicate if this is a duplicate or multi-path INVITE.
|
protected |
|
virtual |
Create a new media stream.
mediaFormat | Media format for stream |
sessionID | Session number for stream |
isSource | Is a source stream |
|
inline |
REturn true if remote allows the method.
References m_allowedMethods.
|
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.
forwardParty | Party to forward call to. |
|
protectedvirtual |
|
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.
|
virtual |
Return a bit mask of the allowed local SIP methods.
Reimplemented from SIPTransactionOwner.
|
inline |
References SIPTransactionOwner::m_authentication.
|
virtual |
Implements SIPTransactionOwner.
|
protected |
|
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.
|
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.
OpalTransportAddress SIPConnection::GetDefaultSDPConnectAddress | ( | WORD | port = 0 | ) | const |
|
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.
|
inline |
References SIPTransactionOwner::m_sipEndpoint.
|
inlinevirtual |
Get any extra call information.
References m_multiPartMIME.
|
virtual |
Get the protocol-specific unique identifier for this connection.
|
virtual |
Get the local name/alias.
|
virtual |
Indicate security modes available in media negotiation.
|
virtual |
Get the data formats this endpoint is capable of operating in.
|
virtual |
|
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.
otherConnection | Other half of call needing media transport addresses |
sessionId | Session identifier |
mediaType | Media type for session to return information |
transports | Information on media session |
|
inline |
Get active PRACK mode. See PRACKMode enum for details.
References m_prackMode.
|
virtual |
Get this connections protocol prefix for URLs.
|
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.
|
inlinevirtual |
Get the remote transport address
References m_remoteAddress.
|
virtual |
Get the remote identity. Under some circumstances the "identity" of the remote party, may be different from the name, number or URL for that user. For example, this would be the P-Asserted-Identity field in SIP.
|
virtual |
|
virtual |
Get supported features for an incoming call. A '
' separated list of protocol dependent names about the supported features of the remote endpoint. The details are outside the scope of this help.
For SIP this corresponds to the contents of the "Supported" header field of the INVITE.
|
protected |
|
protectedvirtual |
|
protected |
|
virtual |
Callback function on receipt of an allowed NOTIFY message. Allowed events are determined by the m_allowedEvents member variable.
eventName | Name of event |
|
virtual |
Call back for connection to act on changed string options.
|
virtual |
Call back for closed a media stream.
The default behaviour calls the OpalEndPoint function of the same name.
stream | Media stream being closed |
|
virtual |
Handle a sending INVITE request
|
protected |
|
protected |
|
protectedvirtual |
|
protected |
|
protected |
|
protected |
|
virtual |
Callback for media commands. Calls the SendIntraFrameRequest on the rtp session
stream | Stream command executed on |
command | Media command being executed |
|
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
|
protectedvirtual |
|
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.
isSource | Is source/sink call |
patch | New patch |
|
virtual |
Pause media streams for connection.
strm | Media stream paused/un-paused |
paused | Flag for pausing/un-pausing |
|
virtual |
Handle an incoming ACK PDU
|
protected |
|
protectedvirtual |
|
virtual |
Handle an incoming Proxy Authentication Required response PDU Returns: true if handled, if false is returned connection is released.
|
virtual |
Handle an incoming BYE PDU
|
virtual |
Handle an incoming CANCEL PDU
|
virtual |
Handle an incoming INFO PDU
|
virtual |
Call back for received an INFO message with a package.
package | Info Package header value |
content | Content data (PDU body) |
|
virtual |
Handle an incoming INVITE request
|
virtual |
|
virtual |
Handle an incoming NOTIFY PDU
|
virtual |
Handle an incoming OK response PDU. This actually gets any PDU of the class 2xx not just 200.
|
virtual |
Handle an incoming OPTIONS PDU
|
virtual |
Handle an incoming SIP PDU that has been full decoded
|
virtual |
Handle an incoming PING PDU
|
virtual |
Handle an incoming PRACK PDU
|
virtual |
Handle an incoming redirect response PDU
|
virtual |
Handle an incoming REFER PDU
|
virtual |
Handle an incoming Re-INVITE request
|
virtual |
Handle an incoming response PDU.
Reimplemented from SIPTransactionOwner.
|
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 |
Handle an incoming Ringing response PDU
|
virtual |
Handle an incoming Session Progress response PDU
|
virtual |
|
virtual |
Handle an incoming Trying response PDU
|
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.
|
protectedvirtual |
|
protected |
|
virtual |
Reimplemented from SIPTransactionOwner.
|
virtual |
Handle the fail of a transaction we initiated.
Reimplemented from SIPTransactionOwner.
|
protected |
|
virtual |
Open source or sink media stream for session.
mediaFormat | Media format to open |
sessionID | Session to start stream on |
isSource | Stream is a source/sink |
|
protected |
|
virtual |
Indicate connection requires symmetric media. Default behaviour returns false.
|
protectedvirtual |
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.
params | Parameters for OPTIONS command |
reply | Reply to message |
|
protectedvirtual |
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.
params | Parameters for OPTIONS command |
reply | Reply to message |
|
protected |
|
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.
value | String value of indication |
PBoolean SIPConnection::SendUserInputTone | ( | char | tone, |
unsigned | duration | ||
) |
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.
|
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.
calleeName | Name of endpoint being alerted. |
withMedia | Flag to alert with/without media |
|
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.
|
virtual |
Indicate to remote endpoint we are connected.
The default behaviour does nothing.
|
protected |
|
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 .
|
protected |
|
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.
remoteParty | Remote party to transfer the existing call to |
|
protected |
|
friend |
|
friend |
|
friend |
|
protected |
|
protected |
|
protected |
Referenced by DoesRemoteAllowMethod().
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Referenced by GetExtraCallInfo().
|
protected |
|
protected |
|
protected |
|
protected |
Referenced by GetPRACKMode().
|
protected |
enum { ... } SIPConnection::m_receivedUserInputMethod |
enum { ... } SIPConnection::m_referOfRemoteState |
enum { ... } SIPConnection::m_releaseMethod |
|
protected |
Referenced by GetRemoteAddress().
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |