DUM Creating New Client Subscriptions

From reSIProcate
Jump to navigation Jump to search

Setup Required in order to form a client Subscription[edit]

  • To add support for the NOTIFY method
mProfile->addSupportedMethod(NOTIFY); 
  • To add support for receiving NOTIFY's with the desired body type
mProfile->addSupportedMimeType(NOTIFY, Mime("application", "pidf+xml"));  
  • To add Support for handling the client subscription
mDum.addClientSubscriptionHandler("presence", mHandler);

Initiating SUBSCRIBE Requests[edit]

Sample Code:

SharedPtr<SipMessage> subMessage = dum.makeSubscription(presentityAor, "presence");
dum.send( subMessage );

Handling NOTIFY Requests[edit]

Sample Code (this same code can also be used in onUpdatePending and onUpdateExtension):

void
MyClientSubscription::onUpdateActive(ClientSubscriptionHandle h, const SipMessage& msg, bool outOfOrder)
{
   InfoLog(<< "onUpdatePending(ClientSubscriptionHandle): handle=" << mSubscriptionHandle << ", " << msg.brief());
   h->acceptUpdate();
   if(msg.getContents())
   {
      const Data& bodyData = msg.getContents()->getBodyData();
      ...handle body...
   }
}