OPAL  Version 3.10.10
OpalLocalConnection Class Reference

#include <localep.h>

Inheritance diagram for OpalLocalConnection:
OpalConnection OpalFaxConnection OpalIVRConnection OpalMixerConnection OpalPCSSConnection

Public Member Functions

Construction
 OpalLocalConnection (OpalCall &call, OpalLocalEndPoint &endpoint, void *userData, unsigned options, OpalConnection::StringOptions *stringOptions, char tokenPrefix='L')
 
 ~OpalLocalConnection ()
 
Overrides from OpalConnection
virtual PBoolean IsNetworkConnection () const
 
virtual void OnApplyStringOptions ()
 Call back for connection to act on changed string options. More...
 
virtual PBoolean SetUpConnection ()
 
virtual PBoolean SetAlerting (const PString &calleeName, PBoolean withMedia)
 
virtual PBoolean SetConnected ()
 
virtual OpalMediaStreamCreateMediaStream (const OpalMediaFormat &mediaFormat, unsigned sessionID, PBoolean isSource)
 
virtual OpalMediaStreamPtr OpenMediaStream (const OpalMediaFormat &mediaFormat, unsigned sessionID, bool isSource)
 
virtual PBoolean SendUserInputString (const PString &value)
 
New operations
virtual bool OnOutgoingSetUp ()
 
virtual bool OnOutgoing ()
 
virtual bool OnIncoming ()
 
virtual void AlertingIncoming ()
 
virtual void AcceptIncoming ()
 
Member variable access
void * GetUserData () const
 Get user data pointer. More...
 
void SetUserData (void *v)
 Set user data pointer. More...
 
- Public Member Functions inherited from OpalConnection
virtual bool GarbageCollection ()
 
const StringOptionsGetStringOptions () const
 Get the string options associated with this connection. More...
 
void SetStringOptions (const StringOptions &options, bool overwrite)
 Set the string options associated with this connection. More...
 
virtual void EnableRecording ()
 
virtual void DisableRecording ()
 
 OpalConnection (OpalCall &call, OpalEndPoint &endpoint, const PString &token, unsigned options=0, OpalConnection::StringOptions *stringOptions=NULL)
 
 ~OpalConnection ()
 
void PrintOn (ostream &strm) const
 
virtual PBoolean OnIncomingConnection (unsigned int options, OpalConnection::StringOptions *stringOptions)
 
virtual PBoolean OnSetUpConnection ()
 
virtual void OnProceeding ()
 
virtual void OnAlerting ()
 
virtual AnswerCallResponse OnAnswerCall (const PString &callerName)
 
virtual void AnsweringCall (AnswerCallResponse response)
 
virtual void OnConnected ()
 
virtual void OnEstablished ()
 
virtual bool OnTransferNotify (const PStringToString &info, const OpalConnection *transferringConnection)
 
virtual void Release (CallEndReason reason=EndedByLocalUser, bool synchronous=false)
 
virtual void OnReleased ()
 
virtual PString GetDestinationAddress ()
 
virtual PBoolean ForwardCall (const PString &forwardParty)
 
PSafePtr< OpalConnectionGetOtherPartyConnection () const
 
template<class cls >
PSafePtr< cls > GetOtherPartyConnectionAs () const
 
virtual OpalMediaFormatList GetMediaFormats () const
 
virtual OpalMediaFormatList GetLocalMediaFormats ()
 
virtual void AdjustMediaFormats (bool local, const OpalConnection *otherConnection, OpalMediaFormatList &mediaFormats) const
 
virtual unsigned GetNextSessionID (const OpalMediaType &mediaType, bool isSource)
 
virtual OpalMediaType::AutoStartMode GetAutoStart (const OpalMediaType &mediaType) const
 
virtual void AutoStartMediaStreams (bool force=false)
 
virtual bool SwitchFaxMediaStreams (bool toT38)
 
virtual void OnSwitchedFaxMediaStreams (bool toT38, bool success)
 
virtual bool OnSwitchingFaxMediaStreams (bool toT38)
 
virtual bool CloseMediaStream (unsigned sessionId, bool source)
 
virtual bool CloseMediaStream (OpalMediaStream &stream)
 
bool RemoveMediaStream (OpalMediaStream &strm)
 
virtual void StartMediaStreams ()
 
virtual void CloseMediaStreams ()
 
virtual void PauseMediaStreams (bool paused)
 
virtual void OnPauseMediaStream (OpalMediaStream &strm, bool paused)
 
OpalMediaStreamPtr GetMediaStream (const PString &streamID, bool source) const
 
OpalMediaStreamPtr GetMediaStream (unsigned sessionId, bool source) const
 
OpalMediaStreamPtr GetMediaStream (const OpalMediaType &mediaType, bool source, OpalMediaStreamPtr previous=NULL) const
 
virtual PBoolean OnOpenMediaStream (OpalMediaStream &stream)
 
virtual void OnClosedMediaStream (const OpalMediaStream &stream)
 
virtual void OnPatchMediaStream (PBoolean isSource, OpalMediaPatch &patch)
 
virtual void OnStartMediaPatch (OpalMediaPatch &patch)
 
virtual void OnStopMediaPatch (OpalMediaPatch &patch)
 
virtual bool OnMediaCommand (OpalMediaStream &stream, const OpalMediaCommand &command)
 
virtual void AttachRFC2833HandlerToPatch (PBoolean isSource, OpalMediaPatch &patch)
 
virtual PBoolean IsMediaBypassPossible (unsigned sessionID) const
 
virtual PBoolean CreateVideoInputDevice (const OpalMediaFormat &mediaFormat, PVideoInputDevice *&device, PBoolean &autoDelete)
 
virtual PBoolean CreateVideoOutputDevice (const OpalMediaFormat &mediaFormat, PBoolean preview, PVideoOutputDevice *&device, PBoolean &autoDelete)
 
virtual bool SendVideoUpdatePicture (unsigned sessionID=0, bool force=false) const
 
virtual PBoolean SetAudioVolume (PBoolean source, unsigned percentage)
 
virtual PBoolean GetAudioVolume (PBoolean source, unsigned &percentage)
 
virtual bool SetAudioMute (bool source, bool mute)
 
virtual bool GetAudioMute (bool source, bool &mute)
 
virtual unsigned GetAudioSignalLevel (PBoolean source)
 
unsigned GetBandwidthAvailable () const
 
virtual PBoolean SetBandwidthAvailable (unsigned newBandwidth, PBoolean force=false)
 
virtual unsigned GetBandwidthUsed () const
 
virtual PBoolean SetBandwidthUsed (unsigned releasedBandwidth, unsigned requiredBandwidth)
 
OpalEndPointGetEndPoint () const
 
OpalCallGetCall () const
 
const PString & GetToken () const
 
PBoolean IsOriginating () const
 
const PTime & GetPhaseTime (Phases phase) const
 
const PTime & GetSetupUpTime () const
 
const PTime & GetAlertingTime () const
 
const PTime & GetConnectionStartTime () const
 
const PTime & GetConnectionEndTime () const
 
const OpalProductInfoGetProductInfo () const
 
void SetProductInfo (const OpalProductInfo &info)
 
virtual PString GetPrefixName () const
 
const PString & GetLocalPartyName () const
 
virtual void SetLocalPartyName (const PString &name)
 
virtual PString GetLocalPartyURL () const
 
const PString & GetDisplayName () const
 
void SetDisplayName (const PString &name)
 
virtual bool IsPresentationBlocked () const
 
const PString & GetRemotePartyName () const
 
void SetRemotePartyName (const PString &name)
 
const PString & GetRemotePartyNumber () const
 
const PString & GetRemotePartyAddress () const
 
void SetRemotePartyAddress (const PString &addr)
 
virtual PString GetRemotePartyURL () const
 
const PString & GetRedirectingParty () const
 
void SetRedirectingParty (const PString &party)
 
const PString GetRemotePartyCallbackURL () const
 
PCaselessString GetRemoteApplication () const
 
const OpalProductInfoGetRemoteProductInfo () const
 
const PString & GetCalledPartyName () const
 
const PString & GetCalledPartyNumber () const
 
virtual PString GetCalledPartyURL ()
 
void CopyPartyNames (const OpalConnection &other)
 
virtual PString GetAlertingType () const
 
virtual bool SetAlertingType (const PString &info)
 
virtual PString GetCallInfo () const
 
unsigned GetMinAudioJitterDelay () const
 
unsigned GetMaxAudioJitterDelay () const
 
void SetAudioJitterDelay (unsigned minDelay, unsigned maxDelay)
 
OpalSilenceDetectorGetSilenceDetector () const
 
virtual PString GetIdentifier () const
 
virtual PINDEX GetMaxRtpPayloadSize () const
 
virtual OpalTransportGetTransport () const
 
 PDICTIONARY (MediaAddressesDict, POrdinalKey, OpalTransportAddress)
 
MediaAddressesDict & GetMediaTransportAddresses ()
 
unsigned GetVideoUpdateRequestsSent () const
 
__inline Phases GetPhase () const
 
__inline bool IsEstablished () const
 Return true if connection is in the established phase. More...
 
__inline bool IsReleased () const
 Return true if connection is in the established phase. More...
 
void SetPhase (Phases phaseToSet)
 
CallEndReason GetCallEndReason () const
 
PString GetCallEndReasonText () const
 
virtual void SetCallEndReason (CallEndReason reason)
 
void ClearCall (CallEndReason reason=EndedByLocalUser, PSyncPoint *sync=NULL)
 
virtual void ClearCallSynchronous (PSyncPoint *sync, CallEndReason reason=EndedByLocalUser)
 
unsigned GetQ931Cause () const
 
void SetQ931Cause (unsigned v)
 
virtual bool TransferConnection (const PString &remoteParty)
 
virtual bool Hold (bool fromRemote, bool placeOnHold)
 
virtual bool IsOnHold (bool fromRemote)
 
virtual void OnHold (bool fromRemote, bool onHold)
 
virtual void SetSendUserInputMode (SendUserInputModes mode)
 
virtual SendUserInputModes GetSendUserInputMode () const
 
virtual SendUserInputModes GetRealSendUserInputMode () const
 
virtual PBoolean SendUserInputTone (char tone, unsigned duration=0)
 
virtual void OnUserInputString (const PString &value)
 
virtual void OnUserInputTone (char tone, unsigned duration)
 
void SendUserInputHookFlash (unsigned duration=500)
 
virtual PString GetUserInput (unsigned timeout=30)
 
virtual void SetUserInput (const PString &input)
 
virtual PString ReadUserInput (const char *terminators="#\", unsigned lastDigitTimeout=4, unsigned firstDigitTimeout=30)
 
virtual PBoolean PromptUserInput (PBoolean play)
 

Protected Attributes

OpalLocalEndPointendpoint
 
void * m_userData
 
- Protected Attributes inherited from OpalConnection
OpalCallownerCall
 
OpalEndPointendpoint
 
PString callToken
 
PBoolean originating
 
OpalProductInfo productInfo
 
PString localPartyName
 
PString displayName
 
PString remotePartyName
 
PString remotePartyURL
 
OpalProductInfo remoteProductInfo
 
PString remotePartyNumber
 
PString remotePartyAddress
 
PString m_redirectingParty
 
CallEndReason callEndReason
 
PString m_calledPartyNumber
 
PString m_calledPartyName
 
SendUserInputModes sendUserInputMode
 
PString userInputString
 
PSyncPoint userInputAvailable
 
OpalSilenceDetectorsilenceDetector
 
OpalMediaFormat m_filterMediaFormat
 
OpalMediaFormatList m_localMediaFormats
 
MediaAddressesDict mediaTransportAddresses
 
PSafeList< OpalMediaStreammediaStreams
 
unsigned minAudioJitterDelay
 
unsigned maxAudioJitterDelay
 
unsigned bandwidthAvailable
 
StringOptions m_stringOptions
 
PString m_recordingFilename
 
PNotifier m_recordAudioNotifier
 
PNotifier m_recordVideoNotifier
 
unsigned m_VideoUpdateRequestsSent
 
AutoStartMap m_autoStartInfo
 
enum OpalConnection:: { ... }  m_faxMediaStreamsSwitchState
 
ZeroTime m_phaseTime [NumPhases]
 

Additional Inherited Members

- Public Types inherited from OpalConnection
enum  CallEndReasonCodes {
  EndedByLocalUser, EndedByNoAccept, EndedByAnswerDenied, EndedByRemoteUser,
  EndedByRefusal, EndedByNoAnswer, EndedByCallerAbort, EndedByTransportFail,
  EndedByConnectFail, EndedByGatekeeper, EndedByNoUser, EndedByNoBandwidth,
  EndedByCapabilityExchange, EndedByCallForwarded, EndedBySecurityDenial, EndedByLocalBusy,
  EndedByLocalCongestion, EndedByRemoteBusy, EndedByRemoteCongestion, EndedByUnreachable,
  EndedByNoEndPoint, EndedByHostOffline, EndedByTemporaryFailure, EndedByQ931Cause,
  EndedByDurationLimit, EndedByInvalidConferenceID, EndedByNoDialTone, EndedByNoRingBackTone,
  EndedByOutOfService, EndedByAcceptingCallWaiting, EndedByGkAdmissionFailed, NumCallEndReasons
}
 
enum  AnswerCallResponse {
  AnswerCallNow, AnswerCallDenied, AnswerCallPending, AnswerCallDeferred,
  AnswerCallAlertWithMedia, AnswerCallDeferredWithMedia, AnswerCallProgress, AnswerCallNowAndReleaseCurrent,
  NumAnswerCallResponses
}
 
enum  Options {
  FastStartOptionDisable = 0x0001, FastStartOptionEnable = 0x0002, FastStartOptionMask = 0x0003, H245TunnelingOptionDisable = 0x0004,
  H245TunnelingOptionEnable = 0x0008, H245TunnelingOptionMask = 0x000c, H245inSetupOptionDisable = 0x0010, H245inSetupOptionEnable = 0x0020,
  H245inSetupOptionMask = 0x0030, DetectInBandDTMFOptionDisable = 0x0040, DetectInBandDTMFOptionEnable = 0x0080, DetectInBandDTMFOptionMask = 0x00c0,
  RTPAggregationDisable = 0x0100, RTPAggregationEnable = 0x0200, RTPAggregationMask = 0x0300, SendDTMFAsDefault = 0x0000,
  SendDTMFAsString = 0x0400, SendDTMFAsTone = 0x0800, SendDTMFAsRFC2833 = 0x0c00, SendDTMFMask = 0x0c00
}
 
enum  Phases {
  UninitialisedPhase, SetUpPhase, ProceedingPhase, AlertingPhase,
  ConnectedPhase, EstablishedPhase, ForwardingPhase, ReleasingPhase,
  ReleasedPhase, NumPhases
}
 
enum  SendUserInputModes {
  SendUserInputAsQ931, SendUserInputAsString, SendUserInputAsTone, SendUserInputAsRFC2833,
  SendUserInputInBand, SendUserInputAsProtocolDefault, NumSendUserInputModes, SendUserInputAsInlineRFC2833 = SendUserInputAsRFC2833
}
 
- Static Public Member Functions inherited from OpalConnection
static PString GetCallEndReasonText (CallEndReason reason)
 
static void SetCallEndReasonText (CallEndReasonCodes reasonCode, const PString &newText)
 
- Protected Types inherited from OpalConnection
enum  { e_NotSwitchingFaxMediaStreams, e_SwitchingToFaxMediaStreams, e_SwitchingFromFaxMediaStreams }
 
- Protected Member Functions inherited from OpalConnection
void OnConnectedInternal ()
 
 PDECLARE_NOTIFIER (PThread, OpalConnection, OnReleaseThreadMain)
 
 PDECLARE_NOTIFIER (RTP_DataFrame, OpalConnection, OnRecordAudio)
 
 PDECLARE_NOTIFIER (RTP_DataFrame, OpalConnection, OnRecordVideo)
 
void OnStartRecording (OpalMediaPatch *patch)
 
void OnStopRecording (OpalMediaPatch *patch)
 

Detailed Description

Local connection. This class represents a connection on the local machine that can receive media via virtual functions.

Constructor & Destructor Documentation

◆ OpalLocalConnection()

OpalLocalConnection::OpalLocalConnection ( OpalCall call,
OpalLocalEndPoint endpoint,
void *  userData,
unsigned  options,
OpalConnection::StringOptions stringOptions,
char  tokenPrefix = 'L' 
)

Create a new connection.

Parameters
callOwner call for connection
endpointOwner endpoint for connection
userDataArbitrary data to pass to connection
optionsOption bit mask to pass to connection
stringOptionsOptions to pass to connection
tokenPrefixPrefix for token generation

◆ ~OpalLocalConnection()

OpalLocalConnection::~OpalLocalConnection ( )

Destroy connection.

Member Function Documentation

◆ AcceptIncoming()

virtual void OpalLocalConnection::AcceptIncoming ( )
virtual

Accept the incoming connection.

◆ AlertingIncoming()

virtual void OpalLocalConnection::AlertingIncoming ( )
virtual

Indicate alerting for the incoming connection.

◆ CreateMediaStream()

virtual OpalMediaStream* OpalLocalConnection::CreateMediaStream ( const OpalMediaFormat mediaFormat,
unsigned  sessionID,
PBoolean  isSource 
)
virtual

Open a new media stream. This will create a media stream of an appropriate subclass as required by the underlying connection protocol. For instance H.323 would create an OpalRTPStream.

The sessionID parameter may not be needed by a particular media stream and may be ignored. In the case of an OpalRTPStream it us used.

Note that media streams may be created internally to the underlying protocol. This function is not the only way a stream can come into existance.

The default behaviour is pure.

Parameters
mediaFormatMedia format for stream
sessionIDSession number for stream
isSourceIs a source stream

Reimplemented from OpalConnection.

Reimplemented in OpalMixerConnection, OpalPCSSConnection, OpalIVRConnection, and OpalFaxConnection.

◆ GetUserData()

void* OpalLocalConnection::GetUserData ( ) const
inline

Get user data pointer.

◆ IsNetworkConnection()

virtual PBoolean OpalLocalConnection::IsNetworkConnection ( ) const
inlinevirtual

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.

Reimplemented in OpalIVRConnection.

References OpalLocalEndPoint::OnOutgoingSetUp().

◆ OnApplyStringOptions()

virtual void OpalLocalConnection::OnApplyStringOptions ( )
virtual

Call back for connection to act on changed string options.

Reimplemented from OpalConnection.

Reimplemented in OpalMixerConnection.

◆ OnIncoming()

virtual bool OpalLocalConnection::OnIncoming ( )
virtual

Call back to indicate that there is an incoming call. Note this function should not block or it will impede the operation of the stack.

The default implementation call OpalLocalEndPoint::OnIncomingCall().

Returns
false if the call is to be aborted with status of EndedByLocalBusy.

◆ OnOutgoing()

virtual bool OpalLocalConnection::OnOutgoing ( )
virtual

Call back to indicate that remote is ringing.

The default implementation call OpalLocalEndPoint::OnOutgoingCall().

Returns
false if the call is to be aborted with EndedByNoAccept.

◆ OnOutgoingSetUp()

virtual bool OpalLocalConnection::OnOutgoingSetUp ( )
virtual

Call back just before remote is contacted.

The default implementation call OpalLocalEndPoint::OnOutgoingSetUp().

Returns
false if the call is to be aborted with EndedByNoAccept.

◆ OpenMediaStream()

virtual OpalMediaStreamPtr OpalLocalConnection::OpenMediaStream ( const OpalMediaFormat mediaFormat,
unsigned  sessionID,
bool  isSource 
)
virtual

Open source or sink media stream for session.

Parameters
mediaFormatMedia format to open
sessionIDSession to start stream on
isSourceStream is a source/sink

Reimplemented from OpalConnection.

◆ SendUserInputString()

virtual PBoolean OpalLocalConnection::SendUserInputString ( const PString &  value)
virtual

Send a user input indication to the remote endpoint. This sends an arbitrary string as a user indication. If DTMF tones in particular are required to be sent then the SendIndicationTone() function should be used.

The default behaviour plays the DTMF tones on the line.

Parameters
valueString value of indication

Reimplemented from OpalConnection.

Reimplemented in OpalMixerConnection, and OpalIVRConnection.

◆ SetAlerting()

virtual PBoolean OpalLocalConnection::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
calleeNameName of endpoint being alerted.
withMediaOpen media with alerting

Implements OpalConnection.

◆ SetConnected()

virtual PBoolean OpalLocalConnection::SetConnected ( )
virtual

Indicate to remote endpoint we are connected.

The default behaviour sets the phase to ConnectedPhase, sets the connection start time and then checks if there is any media channels opened and if so, moves on to the established phase, calling OnEstablished().

In other words, this method is used to handle incoming calls, and is an indication that we have accepted the incoming call.

Reimplemented from OpalConnection.

◆ SetUpConnection()

virtual PBoolean OpalLocalConnection::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 determines if this si incoming or outgoing call by checking if we are party A or B, then does approriate setting up of the conenction, including calling OnOutgoing() or OnIncoming() as appropriate.

Implements OpalConnection.

◆ SetUserData()

void OpalLocalConnection::SetUserData ( void *  v)
inline

Set user data pointer.

Field Documentation

◆ endpoint

OpalLocalEndPoint& OpalLocalConnection::endpoint
protected

◆ m_userData

void* OpalLocalConnection::m_userData
protected

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