From 179fa413b047bede6e32109e2ce82437c5fb8d34 Mon Sep 17 00:00:00 2001 From: MenTaLguY Date: Mon, 16 Jan 2006 02:36:01 +0000 Subject: moving trunk for module inkscape (bzr r1) --- src/jabber_whiteboard/message-queue.cpp | 138 ++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 src/jabber_whiteboard/message-queue.cpp (limited to 'src/jabber_whiteboard/message-queue.cpp') diff --git a/src/jabber_whiteboard/message-queue.cpp b/src/jabber_whiteboard/message-queue.cpp new file mode 100644 index 000000000..89c20d66f --- /dev/null +++ b/src/jabber_whiteboard/message-queue.cpp @@ -0,0 +1,138 @@ +/** + * Whiteboard message queue + * + * Authors: + * David Yip + * + * Copyright (c) 2005 Authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include + +#include "desktop-handles.h" +#include "message-stack.h" + +#include "jabber_whiteboard/session-manager.h" +#include "jabber_whiteboard/message-node.h" +#include "jabber_whiteboard/message-queue.h" + +namespace Inkscape { + +namespace Whiteboard { + +MessageQueue::MessageQueue(SessionManager* sm) : _sm(sm) +{ + +} + +MessageQueue::~MessageQueue() +{ + +} + +MessageNode* +MessageQueue::first() +{ + return this->_queue.front(); +} + +void +MessageQueue::popFront() +{ + this->_queue.pop_front(); +// g_log(NULL, G_LOG_LEVEL_DEBUG, "Removed element, queue size (for %s): %u", lm_connection_get_jid(this->_sm->session_data->connection), this->_queue.size()); +} + +unsigned int +MessageQueue::size() +{ + return this->_queue.size(); +} + +bool +MessageQueue::empty() +{ + return this->_queue.empty(); +} + +void +MessageQueue::clear() +{ + this->_queue.clear(); +} + +ReceiveMessageQueue::ReceiveMessageQueue(SessionManager* sm) : MessageQueue(sm), _latest(0) +{ + +} + +void +ReceiveMessageQueue::insert(MessageNode* msg) +{ + // Check to see if the incoming message has a sequence number + // lower than the sequence number of the latest message processed + // by this message's sender. If it does, drop the message and produce + // a warning. + if (msg->sequence() < this->_latest) { + g_warning("Received late message (message sequence number is %u, but latest processed message had sequence number %u). Discarding message; session may be desynchronized.", msg->sequence(), this->_latest); + return; + } + + // Otherwise, it is safe to insert this message. +// Inkscape::GC::anchor(msg); + this->_queue.push_back(msg); + SP_DT_MSGSTACK(this->_sm->desktop())->flashF(Inkscape::NORMAL_MESSAGE, + ngettext("%u change in receive queue.", + "%u changes in receive queue.", + this->_queue.size()), + this->_queue.size()); +// g_log(NULL, G_LOG_LEVEL_DEBUG, "Receive queue size (for %s): %u", lm_connection_get_jid(this->_sm->session_data->connection), this->_queue.size()); +} + +void +ReceiveMessageQueue::insertDeferred(MessageNode* msg) +{ + this->_deferred.push_back(msg); +} + +void +ReceiveMessageQueue::setLatestProcessedPacket(unsigned int seq) +{ + this->_latest = seq; +} + +SendMessageQueue::SendMessageQueue(SessionManager* sm) : MessageQueue(sm) +{ + +} + +void +SendMessageQueue::insert(MessageNode* msg) +{ +// Inkscape::GC::anchor(msg); + this->_queue.push_back(msg); + SP_DT_MSGSTACK(this->_sm->desktop())->flashF(Inkscape::NORMAL_MESSAGE, + ngettext("%u change in send queue.", + "%u changes in send queue.", + this->_queue.size()), + this->_queue.size()); +// g_log(NULL, G_LOG_LEVEL_DEBUG, "Send queue size (for %s): %u", lm_connection_get_jid(this->_sm->session_data->connection), this->_queue.size()); +} + +} + +} + + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : -- cgit v1.2.3