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

#include <ClientPagerMessage.hxx>

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

List of all members.

Classes

struct  Item

Public Member Functions

 ClientPagerMessage (DialogUsageManager &dum, DialogSet &dialogSet)
ClientPagerMessageHandle getHandle ()
SipMessagegetMessageRequest ()
 kh!
virtual void page (std::auto_ptr< Contents > contents, DialogUsageManager::EncryptionLevel level=DialogUsageManager::None)
 kh!
virtual void end ()
virtual void endCommand ()
 Provide asynchronous method access by using command.
virtual void pageCommand (std::auto_ptr< Contents > contents, DialogUsageManager::EncryptionLevel level=DialogUsageManager::None)
virtual void dispatch (const SipMessage &msg)
virtual void dispatch (const DumTimeout &timer)
size_t msgQueued () const
virtual EncodeStreamdump (EncodeStream &strm) const

Protected Member Functions

virtual ~ClientPagerMessage ()

Private Types

typedef std::deque< ItemMsgQueue

Private Member Functions

 ClientPagerMessage (const ClientPagerMessage &)
ClientPagerMessageoperator= (const ClientPagerMessage &)
void pageFirstMsgQueued ()
void clearMsgQueued ()

Private Attributes

SharedPtr< SipMessagemRequest
MsgQueue mMsgQueue
bool mEnded

Friends

class DialogSet

Detailed Description

Definition at line 15 of file ClientPagerMessage.hxx.


Member Typedef Documentation

typedef std::deque<Item> resip::ClientPagerMessage::MsgQueue [private]

Definition at line 63 of file ClientPagerMessage.hxx.


Constructor & Destructor Documentation

ClientPagerMessage::ClientPagerMessage ( DialogUsageManager dum,
DialogSet dialogSet 
)

Definition at line 96 of file ClientPagerMessage.cxx.

   : NonDialogUsage(dum, dialogSet),
     mRequest(dialogSet.getCreator()->getLastRequest()),
     mEnded(false)
{
}
ClientPagerMessage::~ClientPagerMessage ( ) [protected, virtual]

Definition at line 103 of file ClientPagerMessage.cxx.

References clearMsgQueued(), resip::DialogSet::mClientPagerMessage, and resip::NonDialogUsage::mDialogSet.

Here is the call graph for this function:

resip::ClientPagerMessage::ClientPagerMessage ( const ClientPagerMessage ) [private]

Member Function Documentation

void ClientPagerMessage::clearMsgQueued ( ) [private]

Definition at line 274 of file ClientPagerMessage.cxx.

References mMsgQueue.

Referenced by ~ClientPagerMessage().

{
   MsgQueue::iterator   contents;
   for(contents = mMsgQueue.begin(); contents != mMsgQueue.end(); ++contents)
   {
      Contents* p = contents->contents;
      delete p;
   }
   mMsgQueue.clear();
}
void ClientPagerMessage::dispatch ( const SipMessage msg) [virtual]

Implements resip::BaseUsage.

Definition at line 167 of file ClientPagerMessage.cxx.

References resip::Message::brief(), DebugLog, getHandle(), h_StatusLine, resip::SipMessage::header(), resip::SipMessage::isResponse(), resip::Helper::makeResponse(), resip::DialogUsageManager::mClientPagerMessageHandler, resip::BaseUsage::mDum, mMsgQueue, mRequest, pageFirstMsgQueued(), and WarningLog.

Referenced by resip::DialogSet::dispatch().

{
   assert(msg.isResponse());

   ClientPagerMessageHandler* handler = mDum.mClientPagerMessageHandler;
   assert(handler);

   int code = msg.header(h_StatusLine).statusCode();

   DebugLog ( << "ClientPagerMessageReq::dispatch(msg)" << msg.brief() );
   {
      assert(mMsgQueue.empty() == false);
      if (code < 200)
      {
         DebugLog ( << "ClientPagerMessageReq::dispatch - encountered provisional response" << msg.brief() );
      }
      else if (code < 300)
      {
         if(mMsgQueue.empty() == false)
         {
            delete mMsgQueue.front().contents;
            mMsgQueue.pop_front();
            if(mMsgQueue.empty() == false)
            {
               this->pageFirstMsgQueued();
            }

            handler->onSuccess(getHandle(), msg);
         }
      }
      else
      {
         SipMessage errResponse;
         MsgQueue::iterator contents;
         for(contents = mMsgQueue.begin(); contents != mMsgQueue.end(); ++contents)
         {
            Contents* p = contents->contents;
            WarningLog ( << "Paging failed " << *p );
            Helper::makeResponse(errResponse, *mRequest, code);
            handler->onFailure(getHandle(), errResponse, std::auto_ptr<Contents>(p));
            contents->contents = 0;
         }
         mMsgQueue.clear();
      }
   }
}

Here is the call graph for this function:

void ClientPagerMessage::dispatch ( const DumTimeout timer) [virtual]

Implements resip::BaseUsage.

Definition at line 215 of file ClientPagerMessage.cxx.

{
}
EncodeStream & ClientPagerMessage::dump ( EncodeStream strm) const [virtual]

Implements resip::BaseUsage.

Definition at line 286 of file ClientPagerMessage.cxx.

References mMsgQueue.

{
   strm << "ClientPagerMessage queued: " << mMsgQueue.size();
   return strm;
}
void ClientPagerMessage::end ( ) [virtual]

Implements resip::BaseUsage.

Definition at line 220 of file ClientPagerMessage.cxx.

References resip::DialogUsageManager::destroy(), resip::BaseUsage::mDum, and mEnded.

{
   if(!mEnded)
   {
      mEnded = true;
      mDum.destroy(this);
   }
}

Here is the call graph for this function:

void ClientPagerMessage::endCommand ( ) [virtual]

Provide asynchronous method access by using command.

Definition at line 251 of file ClientPagerMessage.cxx.

References resip::BaseUsage::mDum, and resip::TransactionUser::post().

Here is the call graph for this function:

ClientPagerMessageHandle ClientPagerMessage::getHandle ( )

Definition at line 91 of file ClientPagerMessage.cxx.

References resip::BaseUsage::getBaseHandle(), and resip::BaseUsage::mDum.

Referenced by dispatch(), and resip::DialogUsageManager::makePagerMessage().

Here is the call graph for this function:

SipMessage & ClientPagerMessage::getMessageRequest ( )

kh!

Definition at line 110 of file ClientPagerMessage.cxx.

References mRequest.

{
   return *mRequest;
}
size_t ClientPagerMessage::msgQueued ( ) const

Definition at line 257 of file ClientPagerMessage.cxx.

References mMsgQueue.

{
   return  mMsgQueue.size();
}
ClientPagerMessage& resip::ClientPagerMessage::operator= ( const ClientPagerMessage ) [private]
void ClientPagerMessage::page ( std::auto_ptr< Contents contents,
DialogUsageManager::EncryptionLevel  level = DialogUsageManager::None 
) [virtual]

kh!

Definition at line 116 of file ClientPagerMessage.cxx.

References resip::ClientPagerMessage::Item::contents, resip::ClientPagerMessage::Item::encryptionLevel, mMsgQueue, and pageFirstMsgQueued().

{
    assert(contents.get() != 0);
    bool do_page = mMsgQueue.empty();
    Item item;
    item.contents = contents.release();
    item.encryptionLevel = level;
    mMsgQueue.push_back(item);
    if(do_page)
    {
       this->pageFirstMsgQueued();
    }
}

Here is the call graph for this function:

void ClientPagerMessage::pageCommand ( std::auto_ptr< Contents contents,
DialogUsageManager::EncryptionLevel  level = DialogUsageManager::None 
) [virtual]

Definition at line 160 of file ClientPagerMessage.cxx.

References resip::BaseUsage::mDum, and resip::TransactionUser::post().

{
   mDum.post(new ClientPagerMessagePageCommand(*this, contents, level));
}

Here is the call graph for this function:

void ClientPagerMessage::pageFirstMsgQueued ( ) [private]

Definition at line 263 of file ClientPagerMessage.cxx.

References DebugLog, resip::BaseUsage::mDum, mMsgQueue, mRequest, resip::DialogUsageManager::send(), and resip::DumHelper::setOutgoingEncryptionLevel().

Referenced by dispatch(), and page().

{
   assert(mMsgQueue.empty() == false);
   mRequest->header(h_CSeq).sequence()++;
   mRequest->setContents(mMsgQueue.front().contents);
   DumHelper::setOutgoingEncryptionLevel(*mRequest, mMsgQueue.front().encryptionLevel);
   DebugLog(<< "ClientPagerMessage::pageFirstMsgQueued: " << *mRequest);
   mDum.send(mRequest);
}

Here is the call graph for this function:


Friends And Related Function Documentation

friend class DialogSet [friend]

Definition at line 51 of file ClientPagerMessage.hxx.


Member Data Documentation

Definition at line 65 of file ClientPagerMessage.hxx.

Referenced by end().

Definition at line 55 of file ClientPagerMessage.hxx.

Referenced by dispatch(), getMessageRequest(), and pageFirstMsgQueued().


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