16 #ifndef _SipConnection_h_ 17 #define _SipConnection_h_ 25 #include "net/SipContactDb.h" 26 #include "utl/UtlObservable.h" 56 static const UtlContainableType
TYPE;
61 UtlBoolean isEarlyMediaFor180Enabled = TRUE,
64 CpMediaInterface* mediaInterface = NULL,
65 SipUserAgent* sipUA = NULL,
66 int offeringDelayMilliSeconds =
IMMEDIATE,
67 int sessionReinviteTimer = 0,
68 int availableBehavior =
RING,
69 const char* forwardUnconditionalUrl = NULL,
70 int busyBehavior =
BUSY,
71 const char* forwardOnBusy = NULL);
82 virtual UtlBoolean
send(SipMessage& message,
83 OsMsgQ* responseListener = NULL,
84 void* responseListenerData = NULL,
85 UtlBoolean bUseSendToTransportType = FALSE);
87 virtual UtlBoolean
dial(
const char* dialString,
90 const char* callController = NULL,
91 const char* originalCallConnection = NULL,
92 UtlBoolean requestQueuedCall = FALSE,
93 const void* pDisplay = NULL,
94 const void* pSecurity = NULL,
95 const char* locationHeader = NULL,
96 const int bandWidth = AUDIO_MICODEC_BW_DEFAULT,
97 UtlBoolean bOnHold = FALSE,
98 const char* originalCallId = NULL,
99 const RTP_TRANSPORT rtpTransportOptions = RTP_TRANSPORT_UDP);
103 const char* transferControllerAddress,
104 const char* targetCallId);
111 const char* transferControllerAddress);
125 virtual UtlBoolean
answer(
const void* hWnd = NULL);
127 virtual UtlBoolean
hangUp();
129 virtual UtlBoolean
hold();
137 virtual UtlBoolean
accept(
int forwardOnNoAnswerTimeOut,
138 const void *pSecurity = NULL,
139 const char* locationHeader = NULL,
140 const int bandWidth = AUDIO_MICODEC_BW_DEFAULT,
141 UtlBoolean sendEarlyMedia = FALSE);
143 virtual UtlBoolean
reject(
int errorCode = 0,
const char* errorText =
"");
145 virtual UtlBoolean
redirect(
const char* forwardAddress);
148 virtual UtlBoolean
sendInfo(UtlString contentType, UtlString sContent);
156 UtlBoolean leaveFieldParmetersIn)
const;
159 OsMsg* eventMessage);
170 int mediaTypeStreamIndex,
171 UtlString& receiveAddress,
179 virtual UtlBoolean
getSession(SipSession& session);
183 virtual OsStatus
getToField(UtlString* toField);
187 virtual OsStatus
getInviteHeaderValue(
const char* headerName,
int headerIndex, UtlString& headerValue)
const;
191 virtual UtlBoolean
isInstanceOf(
const UtlContainableType type)
const;
195 SdpCodecList* codecFactory = NULL);
202 UtlBoolean strictCompare)
const;
206 UtlBoolean tagsMustMatch)
const;
208 void setSecurity(
const SIPXTACK_SECURITY_ATTRIBUTES*
const pSecurity);
236 virtual void notify(
int code,
void *pUserData);
245 const SdpBody* pRemoteBody) ;
253 UtlString* pRemoteHostOrIp = NULL,
254 int* pRemotePort = NULL) ;
260 SdpCodecList* codecFactory);
262 UtlBoolean
doOffHold(UtlBoolean forceReInvite);
264 UtlBoolean
doHangUp(
const char* dialString = NULL,
265 const char* callerId = NULL);
268 const char* callerId,
269 const char* callerDisplayName,
270 UtlString& fromAddress,
271 UtlString& goodToAddress);
274 UtlString& localContact,
275 Url* pToUrl = NULL) ;
312 UtlBoolean doesReplaceCallLegExist,
313 int replaceCallLegState,
314 UtlString& replaceCallId,
315 UtlString& replaceToTag,
316 UtlString& replaceFromTag);
322 SdpCodec** ppMatchedCodecs,
323 int nMatchedCodces) ;
376 SdpCodecList& supportedCodecsArray,
377 int& numCodecsInCommon,
378 SdpCodec** &commonCodecsForEncoder,
379 UtlString& remoteAddress,
384 SdpSrtpParameters& localSrtpParams,
385 SdpSrtpParameters& matchingSrtpParams,
387 int& matchingBandwidth,
388 int localVideoFramerate,
389 int& matchingVideoFramerate);
392 SipUserAgent* sipUserAgent,
394 int availableBehavior,
395 int numAddresses = 0,
396 UtlString hostAddresses[] = NULL,
397 int receiveRtpPorts[] = NULL,
398 int receiveRtcpPorts[] = NULL,
399 int receiveVideoRtpPorts[] = NULL,
400 int receiveVideoRtcpPorts[] = NULL,
401 RTP_TRANSPORT transportTypes[] = NULL,
402 int numMatchingCodecs = 0,
403 SdpCodec* matchingCodecs[] = NULL,
404 SdpSrtpParameters* matchingSrtpParams = NULL,
405 int totalBandwidth = 0,
406 int matchingVideoFramerate = 0);
424 #endif // _SipConnection_h_ void processInviteRequestOffering(const SipMessage *request, int tag, UtlBoolean doesReplaceCallLegExist, int replaceCallLegState, UtlString &replaceCallId, UtlString &replaceToTag, UtlString &replaceFromTag)
Definition: SipConnection.cpp:3009
Abstract call manager.
Definition: CpCallManager.h:97
void processInviteResponseBusy(const SipMessage *response)
Definition: SipConnection.cpp:4777
void updateContact(Url *pContactUrl, SIPX_CONTACT_TYPE eType, Url *pToUrl=NULL, UtlString *pRemoteHostOrIp=NULL, int *pRemotePort=NULL)
Definition: SipConnection.cpp:564
void processAckRequest(const SipMessage *request)
Definition: SipConnection.cpp:3974
Definition: Connection.h:164
void updateContactFromResponse(const SipMessage *pResponse)
Definition: SipConnection.cpp:699
void processInviteResponseRedirect(const SipMessage *response)
Definition: SipConnection.cpp:5387
virtual OsStatus getFromField(UtlString *fromField)
Definition: SipConnection.cpp:6445
UtlBoolean processResponse(const SipMessage *response)
Definition: SipConnection.cpp:4372
void setCallerId()
Definition: SipConnection.cpp:5965
virtual UtlBoolean dequeue()
Definition: SipConnection.cpp:218
void processInviteResponseRequestPending(const SipMessage *response)
Definition: SipConnection.cpp:4797
void processInviteRequestBadTransaction(const SipMessage *request, int tag)
Definition: SipConnection.cpp:2938
void processInviteResponse(const SipMessage *request)
Definition: SipConnection.cpp:5498
MediaStreamPassThroughData * mpPassThroughData
Definition: SipConnection.h:373
virtual UtlBoolean getSession(SipSession &session)
returns: TRUE/FALSE if the connection has an address. The connection may not have an address assigned...
Definition: SipConnection.cpp:6374
virtual void outOfFocus()
Definition: SipConnection.cpp:1105
UtlString mAllowedRemote
Definition: SipConnection.h:359
void processByeResponse(const SipMessage *request)
Definition: SipConnection.cpp:5850
void buildLocalContact(Url fromAddress, UtlString &localContact, Url *pToUrl=NULL)
Definition: SipConnection.cpp:730
UtlString mRouteField
Definition: SipConnection.h:356
UtlBoolean isMethodAllowed(const char *method)
Definition: SipConnection.cpp:6636
int mSessionReinviteTimer
Definition: SipConnection.h:358
SIPX_CONTACT_TYPE mContactType
Definition: SipConnection.h:367
void processReferRequest(const SipMessage *request)
Definition: SipConnection.cpp:3666
SIPXTACK_SECURITY_ATTRIBUTES * mpSecurity
Definition: SipConnection.h:341
void cacheMediaPassThroughData(CpMediaInterface::MEDIA_STREAM_TYPE mediaType, int mediaTypeStreamIndex, UtlString &receiveAddress, int rtpPort, int rtcpPort)
Definition: SipConnection.cpp:6278
static const UtlContainableType TYPE
Definition: SipConnection.h:56
virtual UtlBoolean canSendInfo()
Definition: SipConnection.cpp:1048
void processInviteRequest(const SipMessage *request)
Definition: SipConnection.cpp:3469
UtlBoolean mIsEarlyMediaFor180
Definition: SipConnection.h:364
SipConnection(const char *outboundLineAddress, UtlBoolean isEarlyMediaFor180Enabled=TRUE, CpCallManager *callMgr=NULL, CpCall *call=NULL, CpMediaInterface *mediaInterface=NULL, SipUserAgent *sipUA=NULL, int offeringDelayMilliSeconds=IMMEDIATE, int sessionReinviteTimer=0, int availableBehavior=RING, const char *forwardUnconditionalUrl=NULL, int busyBehavior=BUSY, const char *forwardOnBusy=NULL)
Definition: SipConnection.cpp:68
int remoteVideoRtcpPort
Definition: Connection.h:449
virtual UtlBoolean processMessage(OsMsg &eventMessage)
Definition: SipConnection.cpp:2532
UtlString mRemoteContact
Definition: SipConnection.h:346
void setContactId(SIPX_CONTACT_ID contactId)
Definition: SipConnection.h:162
UtlString mRemoteUserAgent
Definition: SipConnection.h:370
void setVoiceQualityReportTarget(const char *szTargetSipUrl)
Definition: SipConnection.cpp:6137
virtual ~SipConnection()
Definition: SipConnection.cpp:169
virtual UtlBoolean transfereeStatus(int connectionState, int response)
Definition: SipConnection.cpp:2149
CSeqManager manages the CSeq number space for a dialog.
Definition: CSeqManager.h:53
void fireAudioStopEvents(SIPX_MEDIA_CAUSE cause=MEDIA_CAUSE_NORMAL)
Definition: SipConnection.cpp:6996
static UtlBoolean requestShouldCreateConnection(const SipMessage *sipMsg, SipUserAgent &sipUa, SdpCodecList *codecFactory)
Definition: SipConnection.cpp:238
static UtlRandom * sRandom
Definition: SipConnection.h:227
UtlBoolean doHangUp(const char *dialString=NULL, const char *callerId=NULL)
Definition: SipConnection.cpp:2288
void processCancelResponse(const SipMessage *request)
Definition: SipConnection.cpp:5908
UtlBoolean mIsAcceptSent
Definition: SipConnection.h:361
UtlBoolean extendSessionReinvite()
Definition: SipConnection.cpp:2778
virtual UtlBoolean renegotiateCodecs()
Definition: SipConnection.cpp:1874
int mBandwidthId
Definition: SipConnection.h:363
UtlString mLineId
Definition: SipConnection.h:365
SIPX_TRANSPORT_DATA mTransport
Definition: SipConnection.h:371
virtual UtlBoolean offHold()
Definition: SipConnection.cpp:1868
virtual UtlBoolean transferControllerStatus(int connectionState, int response)
Definition: SipConnection.cpp:2142
SipMessage * inviteMsg
Definition: SipConnection.h:338
int getNextCseq()
Definition: SipConnection.cpp:6398
Definition: Connection.h:58
int lastLocalSequenceNumber
Definition: SipConnection.h:353
int SIPX_CONTACT_ID
Type for storing Contact Record identifiers.
Definition: sipXtapi.h:632
SIPX_CONTACT_TYPE selectCompatibleContactType(const SipMessage &request)
Definition: SipConnection.cpp:467
ReinviteStates
Definition: SipConnection.h:49
virtual OsStatus getToField(UtlString *toField)
Definition: SipConnection.cpp:6464
UtlBoolean mbLocallyInitiatedRemoteHold
Definition: SipConnection.h:340
UtlString mLocationHeader
Definition: SipConnection.h:337
void processByeRequest(const SipMessage *request)
Definition: SipConnection.cpp:4156
Definition: SipConnection.h:51
UtlBoolean doOffHold(UtlBoolean forceReInvite)
Definition: SipConnection.cpp:1913
Definition: Connection.h:139
SipMessage * mReferMessage
Definition: SipConnection.h:343
static UtlBoolean processNewFinalMessage(SipUserAgent *sipUa, OsMsg *eventMessage)
Definition: SipConnection.cpp:6047
virtual UtlBoolean sendInfo(UtlString contentType, UtlString sContent)
Definition: SipConnection.cpp:1054
UtlBoolean getInitialSdpCodecs(const SipMessage *sdpMessage, SdpCodecList &supportedCodecsArray, int &numCodecsInCommon, SdpCodec **&commonCodecsForEncoder, UtlString &remoteAddress, int &remotePort, int &remoteRtcpPort, int &remoteVideoRtpPort, int &remoteVideoRtcpPort, SdpSrtpParameters &localSrtpParams, SdpSrtpParameters &matchingSrtpParams, int localBandwidth, int &matchingBandwidth, int localVideoFramerate, int &matchingVideoFramerate)
Definition: SipConnection.cpp:4296
SipConnection & operator=(const SipConnection &rhs)
Definition: SipConnection.cpp:209
UtlSList mObservers
Definition: SipConnection.h:225
SIPX_CONTACT_TYPE
SIPX_CONTACT_TYPE is an enumeration of possible address types for use with SIP contacts and SDP conne...
Definition: sipXtapi.h:524
UtlBoolean inviteFromThisSide
Definition: SipConnection.h:344
UtlBoolean mIsReferSent
Definition: SipConnection.h:360
virtual OsStatus getInviteHeaderValue(const char *headerName, int headerIndex, UtlString &headerValue) const
Definition: SipConnection.cpp:6406
Url mToUrl
Definition: SipConnection.h:348
Definition: SipConnection.h:53
UtlString mLastRequestMethod
Definition: SipConnection.h:345
int reinviteState
Definition: SipConnection.h:355
virtual UtlBoolean answer(const void *hWnd=NULL)
Definition: SipConnection.cpp:1110
void processInviteRequestReinvite(const SipMessage *request, int tag)
Definition: SipConnection.cpp:3156
void setMediaDestination(const char *hostAddress, int audioRtpPort, int audioRtcpPort, int videoRtpPort, int videoRtcpPort, const SdpBody *pRemoteBody)
Definition: SipConnection.cpp:6738
virtual UtlBoolean dial(const char *dialString, const char *callerId, const char *callId, const char *callController=NULL, const char *originalCallConnection=NULL, UtlBoolean requestQueuedCall=FALSE, const void *pDisplay=NULL, const void *pSecurity=NULL, const char *locationHeader=NULL, const int bandWidth=AUDIO_MICODEC_BW_DEFAULT, UtlBoolean bOnHold=FALSE, const char *originalCallId=NULL, const RTP_TRANSPORT rtpTransportOptions=RTP_TRANSPORT_UDP)
Definition: SipConnection.cpp:763
int mRtpTcpRole
Definition: SipConnection.h:332
UtlString mContactUriStr
Definition: SipConnection.h:351
void processInviteResponseFailed(const SipMessage *response)
Definition: SipConnection.cpp:4815
void fireAudioStartEvents(SIPX_MEDIA_CAUSE cause=MEDIA_CAUSE_NORMAL)
Definition: SipConnection.cpp:6939
void processInviteResponseQueued(const SipMessage *response)
Definition: SipConnection.cpp:4790
void fireIncompatibleCodecsEvent(SdpCodecList *pSupportedCodecs, SdpCodec **ppMatchedCodecs, int nMatchedCodces)
Definition: SipConnection.cpp:6890
void processInviteResponseRinging(const SipMessage *response)
Definition: SipConnection.cpp:4621
virtual UtlBoolean willHandleMessage(OsMsg &eventMessage) const
Definition: SipConnection.cpp:6493
int remoteVideoRtpPort
Definition: Connection.h:448
void processInviteRequestLoop(const SipMessage *request, int tag)
Definition: SipConnection.cpp:2951
virtual UtlBoolean isLocallyInitiatedRemoteHold() const
Definition: SipConnection.cpp:6669
SIPX_CONTACT_ID mContactId
Definition: SipConnection.h:368
Normal cause; the call was likely torn down.
Definition: sipXtapiEvents.h:640
virtual UtlBoolean originalCallTransfer(UtlString &transferTargetAddress, const char *transferControllerAddress, const char *targetCallId)
param: requestQueuedCall - indicates that the caller wishes to have the callee queue the call if busy...
Definition: SipConnection.cpp:2034
virtual UtlBoolean hold()
Definition: SipConnection.cpp:1776
virtual UtlBoolean hangUp()
Definition: SipConnection.cpp:1771
void processInviteResponseUnknown(const SipMessage *response)
Definition: SipConnection.cpp:5475
virtual void notify(int code, void *pUserData)
The observable calls this to notify its observers of a change.
Definition: SipConnection.cpp:7210
Definition: SipConnection.h:44
virtual UtlContainableType getContainableType() const
Definition: SipConnection.cpp:6292
int lastRemoteSequenceNumber
Definition: SipConnection.h:354
void processInviteRequestBadRefer(const SipMessage *request, int tag)
Definition: SipConnection.cpp:2987
virtual UtlBoolean send(SipMessage &message, OsMsgQ *responseListener=NULL, void *responseListenerData=NULL, UtlBoolean bUseSendToTransportType=FALSE)
Definition: SipConnection.cpp:7133
virtual void proceedToRinging(const SipMessage *inviteMessage, SipUserAgent *sipUserAgent, int tagNum, int availableBehavior, int numAddresses=0, UtlString hostAddresses[]=NULL, int receiveRtpPorts[]=NULL, int receiveRtcpPorts[]=NULL, int receiveVideoRtpPorts[]=NULL, int receiveVideoRtcpPorts[]=NULL, RTP_TRANSPORT transportTypes[]=NULL, int numMatchingCodecs=0, SdpCodec *matchingCodecs[]=NULL, SdpSrtpParameters *matchingSrtpParams=NULL, int totalBandwidth=0, int matchingVideoFramerate=0)
Definition: SipConnection.cpp:7044
virtual UtlBoolean accept(int forwardOnNoAnswerTimeOut, const void *pSecurity=NULL, const char *locationHeader=NULL, const int bandWidth=AUDIO_MICODEC_BW_DEFAULT, UtlBoolean sendEarlyMedia=FALSE)
Accept and incoming INVITE and change from OFFERING to ALERTING state.
Definition: SipConnection.cpp:1453
void setSecurity(const SIPXTACK_SECURITY_ATTRIBUTES *const pSecurity)
Definition: SipConnection.cpp:6664
void doBlindRefer()
Definition: SipConnection.cpp:2105
void processOptionsResponse(const SipMessage *request)
Definition: SipConnection.cpp:5808
UtlBoolean processRequest(const SipMessage *request)
Definition: SipConnection.cpp:2849
UtlBoolean mbCancelling
Definition: SipConnection.h:339
SipUserAgent * sipUserAgent
Definition: SipConnection.h:335
UtlBoolean mbByeAttempted
Definition: SipConnection.h:334
UtlBoolean mDropping
Definition: SipConnection.h:369
Url mFromUrl
Definition: SipConnection.h:347
void processCancelRequest(const SipMessage *request)
Definition: SipConnection.cpp:4226
Definition: SipConnection.h:52
Definition: sipXtapiInternal.h:288
CSeqManager mCSeqMgr
Definition: SipConnection.h:330
UtlBoolean prepareInviteSdpForSend(SipMessage *pMsg, int connectionId, const void *pSecurityAttribute)
Definition: SipConnection.cpp:6681
Definition: Connection.h:145
virtual UtlBoolean isInviteFromThisSide() const
Definition: SipConnection.cpp:6674
void processNotifyResponse(const SipMessage *request)
Definition: SipConnection.cpp:5786
void processReferResponse(const SipMessage *request)
Definition: SipConnection.cpp:5688
void setExternalTransport(SIPX_TRANSPORT_DATA *pTransport)
Definition: SipConnection.h:164
void sendVoiceQualityReport(const char *szTargetSipUrl)
Definition: SipConnection.cpp:6147
int remoteRtcpPort
Definition: Connection.h:447
void getRemoteUserAgent(UtlString *userAgent)
Definition: SipConnection.cpp:6884
UtlString mFromTag
Definition: SipConnection.h:336
virtual void removeObserver(UtlObserver *observer)
Removes a listener of this observable.
Definition: SipConnection.cpp:7200
UtlString mRemoteUriStr
Definition: SipConnection.h:349
virtual UtlBoolean silentRemoteHold()
Definition: SipConnection.cpp:1901
virtual UtlBoolean targetCallBlindTransfer(const char *transferTargetAddress, const char *transferControllerAddress)
Definition: SipConnection.cpp:2134
void setContactType(SIPX_CONTACT_TYPE eType, Url *pToUrl=NULL)
Definition: SipConnection.cpp:6123
void processInviteResponseNormal(const SipMessage *response)
Definition: SipConnection.cpp:5027
virtual UtlBoolean isSameRemoteAddress(Url &remoteAddress) const
Definition: SipConnection.cpp:6342
virtual UtlBoolean getRemoteAddress(UtlString *remoteAddress) const
Definition: SipConnection.cpp:6297
static UtlBoolean shouldCreateConnection(SipUserAgent &sipUa, OsMsg &eventMessage, SdpCodecList *codecFactory=NULL)
Definition: SipConnection.cpp:398
int mHoldCompleteAction
Definition: SipConnection.h:362
virtual void registerObserver(UtlObserver *observer)
Registers a listener of this observable.
Definition: SipConnection.cpp:7192
virtual UtlBoolean redirect(const char *forwardAddress)
Definition: SipConnection.cpp:1739
UtlString mVoiceQualityReportTarget
Definition: SipConnection.h:372
virtual UtlBoolean reject(int errorCode=0, const char *errorText="")
Definition: SipConnection.cpp:1684
int mRtpTransport
Definition: SipConnection.h:331
virtual UtlBoolean isInstanceOf(const UtlContainableType type) const
Definition: SipConnection.cpp:6485
int mDefaultSessionReinviteTimer
Definition: SipConnection.h:357
void buildFromToAddresses(const char *dialString, const char *callerId, const char *callerDisplayName, UtlString &fromAddress, UtlString &goodToAddress)
Definition: SipConnection.cpp:2472
UtlString mLocalUriStr
Definition: SipConnection.h:350
void processInviteResponseHangingUp(const SipMessage *response)
Definition: SipConnection.cpp:4993
UtlString mLocalContact
The local Contact: field value - a URI in name-addr format.
Definition: SipConnection.h:366
virtual UtlBoolean isConnection(const char *callId, const char *toTag, const char *fromTag, UtlBoolean strictCompare) const
Definition: SipConnection.cpp:6578
void processNotifyRequest(const SipMessage *request)
Definition: SipConnection.cpp:3833
SIPX_MEDIA_CAUSE
Enumeration of possible media event causes.
Definition: sipXtapiEvents.h:638