|
reSIProcate/DialogUsageManager
9694
|
#include <ClientPagerMessage.hxx>


Classes | |
| struct | Item |
Public Member Functions | |
| ClientPagerMessage (DialogUsageManager &dum, DialogSet &dialogSet) | |
| ClientPagerMessageHandle | getHandle () |
| SipMessage & | getMessageRequest () |
| 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 EncodeStream & | dump (EncodeStream &strm) const |
Protected Member Functions | |
| virtual | ~ClientPagerMessage () |
Private Types | |
| typedef std::deque< Item > | MsgQueue |
Private Member Functions | |
| ClientPagerMessage (const ClientPagerMessage &) | |
| ClientPagerMessage & | operator= (const ClientPagerMessage &) |
| void | pageFirstMsgQueued () |
| void | clearMsgQueued () |
Private Attributes | |
| SharedPtr< SipMessage > | mRequest |
| MsgQueue | mMsgQueue |
| bool | mEnded |
Friends | |
| class | DialogSet |
Definition at line 15 of file ClientPagerMessage.hxx.
typedef std::deque<Item> resip::ClientPagerMessage::MsgQueue [private] |
Definition at line 63 of file ClientPagerMessage.hxx.
| 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.
{
this->clearMsgQueued();
mDialogSet.mClientPagerMessage = 0;
}

| resip::ClientPagerMessage::ClientPagerMessage | ( | const ClientPagerMessage & | ) | [private] |
| void ClientPagerMessage::clearMsgQueued | ( | ) | [private] |
Definition at line 274 of file ClientPagerMessage.cxx.
References mMsgQueue.
Referenced by ~ClientPagerMessage().
| 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();
}
}
}

| void ClientPagerMessage::dispatch | ( | const DumTimeout & | timer | ) | [virtual] |
| 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.

| 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().
{
mDum.post(new ClientPagerMessageEndCommand(*this));
}

| 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().
{
return ClientPagerMessageHandle(mDum, getBaseHandle().getId());
}

| 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();
}
}

| 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));
}

| 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);
}

friend class DialogSet [friend] |
Definition at line 51 of file ClientPagerMessage.hxx.
bool resip::ClientPagerMessage::mEnded [private] |
Definition at line 65 of file ClientPagerMessage.hxx.
Referenced by end().
MsgQueue resip::ClientPagerMessage::mMsgQueue [private] |
Definition at line 64 of file ClientPagerMessage.hxx.
Referenced by clearMsgQueued(), dispatch(), dump(), msgQueued(), page(), and pageFirstMsgQueued().
Definition at line 55 of file ClientPagerMessage.hxx.
Referenced by dispatch(), getMessageRequest(), and pageFirstMsgQueued().
1.7.5.1