本文整理汇总了C++中Tuple::getStatus方法的典型用法代码示例。如果您正苦于以下问题:C++ Tuple::getStatus方法的具体用法?C++ Tuple::getStatus怎么用?C++ Tuple::getStatus使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Tuple
的用法示例。
在下文中一共展示了Tuple::getStatus方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: notifyStateChange
// Caller must hold mLock.
void SipPresenceMonitor::notifyStateChange(UtlString& contact,
SipPresenceEvent* presenceEvent)
{
// Loop through the notifier list
UtlHashMapIterator iterator(mStateChangeNotifiers);
UtlString* listUri;
StateChangeNotifier* notifier;
Url contactUrl(contact);
while ((listUri = dynamic_cast <UtlString *> (iterator())))
{
notifier = dynamic_cast <StateChangeNotifier *> (mStateChangeNotifiers.findValue(listUri));
UtlString id;
makeId(id, contact);
Tuple* tuple = presenceEvent->getTuple(id);
if (tuple)
{
UtlString status;
tuple->getStatus(status);
notifier->setStatus(contactUrl,
status.compareTo(STATUS_CLOSED) == 0 ?
StateChangeNotifier::AWAY :
StateChangeNotifier::PRESENT);
}
else
{
notifier->setStatus(contactUrl, StateChangeNotifier::AWAY);
}
}
}
示例2: notifyStateChange
void SipPresenceMonitor::notifyStateChange(UtlString& contact, SipPresenceEvent* presenceEvent)
{
// Loop through the notifier list
UtlHashMapIterator iterator(mStateChangeNotifiers);
UtlString* listUri;
StateChangeNotifier* notifier;
Url contactUrl(contact);
mLock.acquire();
while (listUri = dynamic_cast <UtlString *> (iterator()))
{
notifier = dynamic_cast <StateChangeNotifier *> (mStateChangeNotifiers.findValue(listUri));
if (presenceEvent->isEmpty())
{
notifier->setStatus(contactUrl, StateChangeNotifier::AWAY);
}
else
{
UtlString id;
NetMd5Codec::encode(contact, id);
Tuple* tuple = presenceEvent->getTuple(id);
UtlString status;
tuple->getStatus(status);
if (status.compareTo(STATUS_CLOSE) == 0)
{
notifier->setStatus(contactUrl, StateChangeNotifier::AWAY);
}
else
{
notifier->setStatus(contactUrl, StateChangeNotifier::PRESENT);
}
}
}
mLock.release();
}
示例3: publishContent
void SipPresenceMonitor::publishContent(UtlString& contact, SipPresenceEvent* presenceEvent)
{
bool contentChanged;
// Loop through all the resource lists
UtlHashMapIterator iterator(mMonitoredLists);
UtlString* listUri;
SipResourceList* list;
Resource* resource;
UtlString id, state;
while (listUri = dynamic_cast <UtlString *> (iterator()))
{
contentChanged = false;
list = dynamic_cast <SipResourceList *> (mMonitoredLists.findValue(listUri));
OsSysLog::add(FAC_SIP, PRI_DEBUG, "SipPresenceMonitor::publishContent listUri %s list %p",
listUri->data(), list);
// Search for the contact in this list
resource = list->getResource(contact);
if (resource)
{
resource->getInstance(id, state);
if (presenceEvent->isEmpty())
{
resource->setInstance(id, STATE_TERMINATED);
}
else
{
UtlString id;
NetMd5Codec::encode(contact, id);
Tuple* tuple = presenceEvent->getTuple(id);
UtlString status;
tuple->getStatus(status);
if (status.compareTo(STATUS_CLOSE) == 0)
{
resource->setInstance(id, STATE_TERMINATED);
}
else
{
resource->setInstance(id, STATE_ACTIVE);
}
}
list->buildBody();
contentChanged = true;
}
if (contentChanged)
{
int numOldContents;
HttpBody* oldContent[1];
// Publish the content to the subscribe server
if (!mSipPublishContentMgr.publish(listUri->data(), PRESENCE_EVENT_TYPE, DIALOG_EVENT_TYPE, 1, (HttpBody**)&list, 1, numOldContents, oldContent))
{
UtlString presenceContent;
int length;
list->getBytes(&presenceContent, &length);
OsSysLog::add(FAC_SIP, PRI_ERR, "SipPresenceMonitor::publishContent PresenceEvent %s\n was not successfully published to the subscribe server",
presenceContent.data());
}
}
}
}
示例4: publishContent
void SipPresenceMonitor::publishContent(UtlString& contact, SipPresenceEvent* presenceEvent)
{
#ifdef SUPPORT_RESOURCE_LIST
// Loop through all the resource lists
UtlHashMapIterator iterator(mMonitoredLists);
UtlString* listUri;
SipResourceList* list;
Resource* resource;
UtlString id, state;
while (listUri = dynamic_cast <UtlString *> (iterator()))
{
bool contentChanged = false;
list = dynamic_cast <SipResourceList *> (mMonitoredLists.findValue(listUri));
OsSysLog::add(FAC_SIP, PRI_DEBUG, "SipPresenceMonitor::publishContent listUri %s list %p",
listUri->data(), list);
// Search for the contact in this list
resource = list->getResource(contact);
if (resource)
{
resource->getInstance(id, state);
if (presenceEvent->isEmpty())
{
resource->setInstance(id, STATE_TERMINATED);
}
else
{
UtlString id;
makeId(id, contact);
Tuple* tuple = presenceEvent->getTuple(id);
UtlString status;
tuple->getStatus(status);
if (status.compareTo(STATUS_CLOSED) == 0)
{
resource->setInstance(id, STATE_TERMINATED);
}
else
{
resource->setInstance(id, STATE_ACTIVE);
}
}
list->buildBody();
contentChanged = true;
}
if (contentChanged)
{
// Publish the content to the subscribe server
// Make a copy, because mpSipPublishContentMgr will own it.
HttpBody* pHttpBody = new HttpBody(*(HttpBody*)list);
mSipPublishContentMgr.publish(listUri->data(),
PRESENCE_EVENT_TYPE, PRESENCE_EVENT_TYPE,
1, &pHttpBody);
}
}
#endif
// Publish the content to the subscribe server
// Make a copy, because mpSipPublishContentMgr will own it.
HttpBody* pHttpBody = new HttpBody(*(HttpBody*)presenceEvent);
mSipPublishContentMgr.publish(contact.data(),
PRESENCE_EVENT_TYPE, PRESENCE_EVENT_TYPE,
1, &pHttpBody);
}
示例5: writePersistentFile
// Write the presence events to the persistent file.
void SipPresenceMonitor::writePersistentFile()
{
mLock.acquire();
// Create an empty document
TiXmlDocument document;
// Create a hard coded standalone declaration section
document.Parse("<?xml version=\"1.0\" standalone=\"yes\"?>");
// Create the root node container
TiXmlElement itemsElement ("items");
itemsElement.SetAttribute("type", sType.data());
itemsElement.SetAttribute("xmlns", sXmlNamespace.data());
int timeNow = (int)OsDateTime::getSecsSinceEpoch();
itemsElement.SetAttribute("timestamp", timeNow);
// mPresenceEventList is a hash map that maps contacts to SipPresenceEvents.
// SipPresenceEvents are hash maps of contacts to Tuples. In practice,
// a SipPresenceEvent has only one Tuple. (And if it had more, there
// would be no way to discover what they are, as there is no iterator.)
// Tuples are triples: id, contact, status.
// Loop through all the events in mPresenceEventList.
UtlHashMapIterator iterator(mPresenceEventList);
UtlString* contact;
while ((contact = dynamic_cast <UtlString*> (iterator())))
{
// Create an item container
TiXmlElement itemElement ("item");
// Get the SipPresenceEvent.
SipPresenceEvent* event =
dynamic_cast <SipPresenceEvent*> (iterator.value());
// Calculate the id of the Tuple.
UtlString id;
makeId(id, *contact);
// Get the Tuple.
Tuple* tuple = event->getTuple(id);
// Get the status.
UtlString status;
tuple->getStatus(status);
// Construct the <item>.
TiXmlElement id_element("id");
TiXmlText id_content(id);
id_element.InsertEndChild(id_content);
itemElement.InsertEndChild(id_element);
TiXmlElement contact_element("contact");
TiXmlText contact_content(contact->data());
contact_element.InsertEndChild(contact_content);
itemElement.InsertEndChild(contact_element);
TiXmlElement status_element("status");
TiXmlText status_content(status);
status_element.InsertEndChild(status_content);
itemElement.InsertEndChild(status_element);
// Add the <item> element to the <items> element.
itemsElement.InsertEndChild ( itemElement );
}
// Attach <items> to the root node to the document
document.InsertEndChild(itemsElement);
document.SaveFile(mPersistentFile);
mLock.release();
OsSysLog::add(FAC_SIP, PRI_DEBUG,
"SipPresenceMonitorPersistenceTask::writePersistentFile file written");
}