From c0687aba7478f1e1ab2c8a30d9690345fc3e2c2b Mon Sep 17 00:00:00 2001 From: HanzZ Date: Sun, 17 Feb 2013 17:13:14 +0100 Subject: [PATCH] Libtransport: Move message caching to one method --- include/transport/conversation.h | 1 + src/conversation.cpp | 29 +++++++++++++---------------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/include/transport/conversation.h b/include/transport/conversation.h index 83e22672..268326b0 100644 --- a/include/transport/conversation.h +++ b/include/transport/conversation.h @@ -153,6 +153,7 @@ class Conversation { private: Swift::Presence::ref generatePresence(const std::string &nick, int flag, int status, const std::string &statusMessage, const std::string &newname = ""); + void cacheMessage(boost::shared_ptr &message); private: ConversationManager *m_conversationManager; diff --git a/src/conversation.cpp b/src/conversation.cpp index fbf1be34..5e8aa3d1 100644 --- a/src/conversation.cpp +++ b/src/conversation.cpp @@ -86,17 +86,21 @@ void Conversation::setRoom(const std::string &room) { m_legacyName = m_room + "/" + m_legacyName; } +void Conversation::cacheMessage(boost::shared_ptr &message) { + boost::posix_time::ptime timestamp = boost::posix_time::second_clock::universal_time(); + boost::shared_ptr delay(boost::make_shared()); + delay->setStamp(timestamp); + message->addPayload(delay); + m_cachedMessages.push_back(message); + if (m_cachedMessages.size() > 100) { + m_cachedMessages.pop_front(); + } +} + void Conversation::handleRawMessage(boost::shared_ptr &message) { if (message->getType() != Swift::Message::Groupchat) { if (m_conversationManager->getComponent()->inServerMode() && m_conversationManager->getUser()->shouldCacheMessages()) { - boost::posix_time::ptime timestamp = boost::posix_time::second_clock::universal_time(); - boost::shared_ptr delay(boost::make_shared()); - delay->setStamp(timestamp); - message->addPayload(delay); - m_cachedMessages.push_back(message); - if (m_cachedMessages.size() > 100) { - m_cachedMessages.pop_front(); - } + cacheMessage(message); } else { m_conversationManager->getComponent()->getStanzaChannel()->sendMessage(message); @@ -104,14 +108,7 @@ void Conversation::handleRawMessage(boost::shared_ptr &message) } else { if (m_jids.empty()) { - boost::posix_time::ptime timestamp = boost::posix_time::second_clock::universal_time(); - boost::shared_ptr delay(boost::make_shared()); - delay->setStamp(timestamp); - message->addPayload(delay); - m_cachedMessages.push_back(message); - if (m_cachedMessages.size() > 100) { - m_cachedMessages.pop_front(); - } + cacheMessage(message); } else { BOOST_FOREACH(const Swift::JID &jid, m_jids) {