本文整理汇总了C++中SipMessage::getContactField方法的典型用法代码示例。如果您正苦于以下问题:C++ SipMessage::getContactField方法的具体用法?C++ SipMessage::getContactField怎么用?C++ SipMessage::getContactField使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SipMessage
的用法示例。
在下文中一共展示了SipMessage::getContactField方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: handleRegisterRequest
UtlBoolean TestRegistrar::handleRegisterRequest(SipMessage message)
{
UtlBoolean messageProcessed = false;
SipMessage finalResponse;
UtlString responseToAddress;
UtlString protocol;
int responseToPort;
int seqNum;
UtlString method;
UtlString contactField;
int expires;
static int retrySeqNum = 0;
UtlString callId;
message.getCallIdField(&callId);
message.getContactField(0, contactField);
message.getExpiresField(&expires);
message.getCSeqField(&seqNum, &method);
message.getFromAddress(&responseToAddress, &responseToPort, &protocol);
finalResponse.setContactField(contactField);
finalResponse.setExpiresField(expires);
finalResponse.setFromField("sip:127.0.0.1:5070", 5070);
finalResponse.setSendAddress(contactField, responseToPort);
finalResponse.setToField(contactField, responseToPort, protocol);
finalResponse.setUserAgentField("TestRegistrar");
// finalResponse.setRegisterData(responseToAddress, contactField, "127.0.0.1", contactField, callId, seqNum);
if (contactField.contains("anon")) // anonymous user doesnt need authentication, just say ok
{
finalResponse.setResponseData(&message, 200, "OK");
}
else if (contactField.contains("mike")) // mike requires registration, say 401
{
UtlString realm;
UtlString requestUser;
UtlString requestRealm;
UtlString requestNonce;
UtlString uriParam;
// TBD - 25-jan-2010 work might be needed if these tests are re-enabled
message.getDigestAuthorizationData(
&requestUser, &requestRealm, &requestNonce,
NULL, NULL, &uriParam,
NULL, // TBD cnonce
NULL, // TBD nonceCount
NULL, // TBD qop
HttpMessage::SERVER, 0);
if (seqNum == retrySeqNum) // if this is a retry response
{
// if they've sent any auth field, just accept it.
// TODO: figure out if a username and password has been encrypted and sent.
finalResponse.setCSeqField(++seqNum, SIP_REGISTER_METHOD);
finalResponse.setResponseData(&message, 200, "OK");
}
else
{
message.getCSeqField(&seqNum, &method);
finalResponse.setCSeqField(++seqNum, method);
retrySeqNum = seqNum;
#ifdef _WIN32
finalResponse.setAuthenticateData("md5", "TestRegistrar", NULL, NULL, NULL, HttpMessage::HttpEndpointEnum::SERVER );
#else
finalResponse.setAuthenticateData("md5", "TestRegistrar", NULL, NULL, NULL, HttpMessage::SERVER );
#endif
finalResponse.setResponseData(&message, 401, "Not authorized");
}
}
else if (contactField.contains("xyzzy"))
{
// this is our special username that will cause a response
// to be echoed back with the 3 digit value after xyzzy.
// for instance, the contact xyzzy401 will cause a 401 response
int pos = contactField.first("xyzzy");
char szCode[4];
szCode[0] = contactField[pos + 5];
szCode[1] = contactField[pos + 6];
szCode[2] = contactField[pos + 7];
szCode[3] = '\0';
finalResponse.setResponseData(&message, atoi(szCode), "OK");
}
mpUserAgent->send(finalResponse);
return messageProcessed;
}
示例2: insertDialogInfo
//.........这里部分代码省略.........
*((UtlString*) state) = dialogHandle;
state->mEventTypeKey = eventTypeKey;
state->mpLastSubscribeRequest = subscribeCopy;
state->mResourceId = resourceId;
subscribeCopy->getAcceptField(state->mAcceptHeaderValue);
long now = OsDateTime::getSecsSinceEpoch();
state->mExpirationDate = now + expiration;
// TODO: currently the SipSubsribeServer does not handle timeout
// events to send notifications that the subscription has ended.
// So we do not set a timer at the end of the subscription
state->mpExpirationTimer = NULL;
// Create the index by resourceId and eventTypeKey key
SubscriptionServerStateIndex* stateKey = new SubscriptionServerStateIndex;
*((UtlString*) stateKey) = resourceId;
stateKey->append(eventTypeKey);
stateKey->mpState = state;
subscribeResponse.setResponseData(subscribeCopy,
SIP_ACCEPTED_CODE,
SIP_ACCEPTED_TEXT,
NULL);
subscribeResponse.setExpiresField(expiration);
subscribeCopy->getDialogHandle(subscribeDialogHandle);
lock();
mSubscriptionStatesByDialogHandle.insert(state);
mSubscriptionStateResourceIndex.insert(stateKey);
if (OsSysLog::willLog(FAC_SIP, PRI_DEBUG))
{
UtlString requestContact;
subscribeRequest.getContactField(0, requestContact);
OsSysLog::add(FAC_SIP, PRI_DEBUG,
"SipSubscriptionMgr::insertDialogInfo insert early-dialog subscription for dialog handle '%s', key '%s', contact '%s', mExpirationDate %ld",
state->data(), stateKey->data(),
requestContact.data(), state->mExpirationDate);
}
// Not safe to touch these after we unlock
stateKey = NULL;
state = NULL;
subscribeCopy = NULL;
unlock();
subscriptionSucceeded = TRUE;
// One time subscribe?
isSubscriptionExpired = expiration == 0;
}
// Expiration too small
else
{
// Set expiration too small error
subscribeResponse.setResponseData(&subscribeRequest,
SIP_TOO_BRIEF_CODE,
SIP_SUB_TOO_BRIEF_TEXT);
subscribeResponse.setMinExpiresField(mMinExpiration);
isSubscriptionExpired = TRUE;
}
}
// Not an early dialog handle -- The dialog for this message may already exist
else
{
示例3: handleSubscribe
//.........这里部分代码省略.........
if (handler->getNotifyContent(resourceId,
eventTypeKey,
eventType,
*(eventPackageInfo->mpEventSpecificContentMgr),
acceptHeaderValue,
notifyRequest,
TRUE,
&availableMediaTypes))
{
// Update the NOTIFY content if required for this event type.
// Sets 'version' and 'eventTypeKey'.
int version;
eventPackageInfo->mpEventSpecificSubscriptionMgr->
updateNotifyVersion(eventPackageInfo->mpEventSpecificContentVersionCallback,
notifyRequest,
version,
eventTypeKey);
// Update the saved record of the NOTIFY CSeq and the
// XML version number for the specified eventTypeKey,
// as needed by the subscription manager.
// In practice, this is only used by SipPersistentSubscriptionMgr
// to write the NOTIFY Cseq and XML version into the IMDB.
eventPackageInfo->mpEventSpecificSubscriptionMgr->
updateVersion(notifyRequest, version, eventTypeKey);
// Send the NOTIFY request
setContact(¬ifyRequest);
eventPackageInfo->mpEventSpecificUserAgent->send(notifyRequest);
if (OsSysLog::willLog(FAC_SIP, PRI_INFO))
{
UtlString requestContact;
subscribeRequest.getContactField(0, requestContact);
OsSysLog::add(FAC_SIP, PRI_INFO,
"SipSubscribeServer::handleSubscribe: %s has setup subscription to %s, eventTypeKey %s",
requestContact.data(), resourceId.data(), eventTypeKey.data());
}
}
else
{
// No content was available, so the subscription fails.
// Determine the reason and set the response code.
if (availableMediaTypes.isNull())
{
// No MIME types are available, so the resource does not exist.
subscribeResponse.setResponseFirstHeaderLine(SIP_PROTOCOL_VERSION,
SIP_NOT_FOUND_CODE,
SIP_NOT_FOUND_TEXT);
}
else
{
// MIME types are available, so the resource exists.
subscribeResponse.setResponseFirstHeaderLine(SIP_PROTOCOL_VERSION,
SIP_BAD_MEDIA_CODE,
SIP_BAD_MEDIA_TEXT);
subscribeResponse.setAcceptField(availableMediaTypes);
}
// Destroy the subscription.
eventPackageInfo->mpEventSpecificSubscriptionMgr->
endSubscription(subscribeDialogHandle,
SipSubscriptionMgr::subscriptionTerminated);
// Do not send the NOTIFY.
示例4: updateDialogInfo
//.........这里部分代码省略.........
*((UtlString*) state) = dialogHandle;
state->mEventTypeKey = eventTypeKey;
state->mpLastSubscribeRequest = subscribeCopy;
state->mResourceId = resourceId;
subscribeCopy->getAcceptField(state->mAcceptHeaderValue);
long now = OsDateTime::getSecsSinceEpoch();
state->mExpirationDate = now + expiration;
// TODO: currently the SipSubsribeServer does not handle timeout
// events to send notifications that the subscription has ended.
// So we do not set a timer at the end of the subscription
state->mpExpirationTimer = NULL;
// Create the index by resourceId and eventTypeKey key
SubscriptionServerStateIndex* stateKey = new SubscriptionServerStateIndex;
*((UtlString*) stateKey) = resourceId;
stateKey->append(eventTypeKey);
stateKey->mpState = state;
subscribeResponse.setResponseData(subscribeCopy,
SIP_ACCEPTED_CODE,
SIP_ACCEPTED_TEXT,
NULL);
subscribeResponse.setExpiresField(expiration);
subscribeCopy->getDialogHandle(subscribeDialogHandle);
lock();
mSubscriptionStatesByDialogHandle.insert(state);
mSubscriptionStateResourceIndex.insert(stateKey);
if (OsSysLog::willLog(FAC_SIP, PRI_DEBUG))
{
UtlString requestContact;
subscribeRequest.getContactField(0, requestContact);
OsSysLog::add(FAC_SIP, PRI_DEBUG,
"SipSubscriptionMgr::updateDialogInfo insert early-dialog subscription for dialog handle '%s', key '%s', contact '%s', mExpirationDate %ld",
state->data(), stateKey->data(),
requestContact.data(), state->mExpirationDate);
}
// Not safe to touch these after we unlock
stateKey = NULL;
state = NULL;
subscribeCopy = NULL;
unlock();
subscriptionSucceeded = TRUE;
// One time subscribe?
isSubscriptionExpired = expiration == 0;
}
// Expiration too small
else
{
// Set expiration too small error
subscribeResponse.setResponseData(&subscribeRequest,
SIP_TOO_BRIEF_CODE,
SIP_SUB_TOO_BRIEF_TEXT);
subscribeResponse.setMinExpiresField(mMinExpiration);
isSubscriptionExpired = TRUE;
}
}
// Not an early dialog handle -- The dialog for this message should already exist
else
{