reSIProcate/DialogUsageManager  9694
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Friends
resip::BaseSubscription Class Reference

dcm! -- update contact in dialog if required More...

#include <BaseSubscription.hxx>

Inheritance diagram for resip::BaseSubscription:
Inheritance graph
[legend]
Collaboration diagram for resip::BaseSubscription:
Collaboration graph
[legend]

List of all members.

Public Member Functions

bool matches (const SipMessage &subOrNotify)
const DatagetDocumentKey () const
const DatagetEventType () const
const DatagetId () const

Protected Types

enum  SubDlgState { SubDlgInitial, SubDlgEstablished, SubDlgTerminating }

Protected Member Functions

 BaseSubscription (DialogUsageManager &dum, Dialog &dialog, const SipMessage &request)
SubscriptionState getSubscriptionState ()
virtual ~BaseSubscription ()
 BaseSubscription (const BaseSubscription &)
BaseSubscriptionoperator= (const BaseSubscription &)

Protected Attributes

SubDlgState mSubDlgState
SharedPtr< SipMessagemLastRequest
SharedPtr< SipMessagemLastResponse
Data mDocumentKey
Data mEventType
Data mSubscriptionId
unsigned int mTimerSeq
SubscriptionState mSubscriptionState

Friends

class Dialog

Detailed Description

dcm! -- update contact in dialog if required

Definition at line 15 of file BaseSubscription.hxx.


Member Enumeration Documentation

Enumerator:
SubDlgInitial 
SubDlgEstablished 
SubDlgTerminating 

Definition at line 26 of file BaseSubscription.hxx.


Constructor & Destructor Documentation

BaseSubscription::BaseSubscription ( DialogUsageManager dum,
Dialog dialog,
const SipMessage request 
) [protected]

Definition at line 9 of file BaseSubscription.cxx.

References resip::SipMessage::exists(), h_RequestLine, resip::SipMessage::header(), resip::RequestLine::method(), mEventType, mLastRequest, and mSubscriptionId.

                                                                                                     :
   DialogUsage(dum, dialog),
   mSubDlgState(SubDlgInitial),
   mLastRequest(new SipMessage),
   mLastResponse(new SipMessage),
   mDocumentKey(request.header(h_RequestLine).uri().getAor()),
   mSubscriptionId(Data::Empty),
   mTimerSeq(0),
   mSubscriptionState(Invalid)
   
{
   if (request.exists(h_Event))
   {
      mEventType = request.header(h_Event).value();
      if (request.header(h_Event).exists(p_id))
      {
         mSubscriptionId = request.header(h_Event).param(p_id);
      }
      mLastRequest->header(h_Event) = request.header(h_Event);      
   }
   else if (request.header(h_RequestLine).method() == REFER
            || request.header(h_RequestLine).method() == NOTIFY) 
   {
      mEventType = "refer";
      mLastRequest->header(h_Event).value() = mEventType;      
   }
}

Here is the call graph for this function:

BaseSubscription::~BaseSubscription ( ) [protected, virtual]

Definition at line 62 of file BaseSubscription.cxx.

{
}
resip::BaseSubscription::BaseSubscription ( const BaseSubscription ) [protected]

Member Function Documentation

const Data& resip::BaseSubscription::getDocumentKey ( ) const [inline]
const Data& resip::BaseSubscription::getEventType ( ) const [inline]
const Data& resip::BaseSubscription::getId ( ) const [inline]
SubscriptionState BaseSubscription::getSubscriptionState ( ) [protected]

Definition at line 67 of file BaseSubscription.cxx.

References mSubscriptionState.

{
   return mSubscriptionState;
}
bool BaseSubscription::matches ( const SipMessage subOrNotify)

Definition at line 38 of file BaseSubscription.cxx.

References resip::SipMessage::exists(), resip::SipMessage::header(), resip::SipMessage::isResponse(), mEventType, mLastRequest, and mSubscriptionId.

{
   if (msg.isResponse() && msg.header(h_CSeq) == mLastRequest->header(h_CSeq))
   {
      return true;
   }
   else
   {
      if (msg.exists(h_Event))
      {
         return msg.header(h_Event).value() == mEventType 
            && ( !msg.header(h_Event).exists(p_id) || 
                 msg.header(h_Event).param(p_id) == mSubscriptionId);
         
      }
      else
      {
         return (mEventType == "refer" && 
                 Data(msg.header(h_CSeq).sequence()) == mSubscriptionId);      
      }
   }
}

Here is the call graph for this function:

BaseSubscription& resip::BaseSubscription::operator= ( const BaseSubscription ) [protected]

Friends And Related Function Documentation

friend class Dialog [friend]

Reimplemented in resip::ServerSubscription, and resip::ClientSubscription.

Definition at line 24 of file BaseSubscription.hxx.


Member Data Documentation

Definition at line 47 of file BaseSubscription.hxx.

Referenced by getDocumentKey().

SubscriptionState resip::BaseSubscription::mSubscriptionState [protected]
unsigned int resip::BaseSubscription::mTimerSeq [protected]

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