summaryrefslogtreecommitdiffstats
path: root/src/jabber_whiteboard/message-queue.cpp
diff options
context:
space:
mode:
authorMenTaLguY <mental@rydia.net>2006-01-16 02:36:01 +0000
committermental <mental@users.sourceforge.net>2006-01-16 02:36:01 +0000
commit179fa413b047bede6e32109e2ce82437c5fb8d34 (patch)
treea5a6ac2c1708bd02288fbd8edb2ff500ff2e0916 /src/jabber_whiteboard/message-queue.cpp
downloadinkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.tar.gz
inkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.zip
moving trunk for module inkscape
(bzr r1)
Diffstat (limited to 'src/jabber_whiteboard/message-queue.cpp')
-rw-r--r--src/jabber_whiteboard/message-queue.cpp138
1 files changed, 138 insertions, 0 deletions
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 <yipdw@rose-hulman.edu>
+ *
+ * Copyright (c) 2005 Authors
+ *
+ * Released under GNU GPL, read the file 'COPYING' for more information
+ */
+
+#include <glibmm/i18n.h>
+
+#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 :