summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJonas Suhr Christensen <jsc@umbraculum.org>2012-04-12 11:30:40 +0200
committerJonas Suhr Christensen <jsc@umbraculum.org>2012-04-12 11:30:40 +0200
commitfd373d0b0f580b56f3350e92207cfa499806ca4d (patch)
tree40e5d8ea77a78295959ac1ad2375d0d4e92720f5 /src
parentb320cc10871217d51e3458bf85a22e7d50ee4aec (diff)
Added a bit of debugging messages.
Merged task_proto and observe_proto into one protocol in munia_proto.
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am6
-rw-r--r--src/connectionhandler.cc7
-rw-r--r--src/connectionhandler.h2
-rw-r--r--src/messagehandler.cc10
-rw-r--r--src/messagehandler.h3
-rw-r--r--src/munia_proto.cc (renamed from src/task_proto.cc)22
-rw-r--r--src/munia_proto.h (renamed from src/task_proto.h)8
-rw-r--r--src/muniad.cc6
-rw-r--r--src/observe_proto.cc85
-rw-r--r--src/observe_proto.h44
10 files changed, 45 insertions, 148 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 4d087d8..9fccb45 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -14,12 +14,11 @@ muniad_SOURCES = \
http.cc \
messagehandler.cc \
messageparser.cc \
+ munia_proto.cc \
saxparser.cc \
task.cc \
- task_proto.cc \
taskmanager.cc \
tasktree.cc \
- observe_proto.cc \
xml_encode_decode.cc \
xmlparser.cc
@@ -31,12 +30,11 @@ EXTRA_DIST = \
message.h \
messageparser.h \
messagehandler.h \
+ munia_proto.h \
saxparser.h \
task.h \
- task_proto.h \
taskmanager.h \
tasktree.h \
- observe_proto.h \
xml_encode_decode.h \
xmlparser.h
diff --git a/src/connectionhandler.cc b/src/connectionhandler.cc
index 9362965..85ae4a7 100644
--- a/src/connectionhandler.cc
+++ b/src/connectionhandler.cc
@@ -38,7 +38,14 @@ ConnectionHandler::ConnectionHandler()
void ConnectionHandler::init(clientid_t clientid)
{
+ printf("Adding client %p to connection list\n", clientid);
connlist[clientid] = std::set<taskid_t>();
+
+ printf("Connections (%d):\n", connlist.size());
+ ConnectionList::iterator it;
+ for(it = connlist.begin(); it != connlist.end(); it++) {
+ printf("\t%p\n", it->first);
+ }
}
void ConnectionHandler::close(clientid_t clientid)
diff --git a/src/connectionhandler.h b/src/connectionhandler.h
index f5e63d7..464128b 100644
--- a/src/connectionhandler.h
+++ b/src/connectionhandler.h
@@ -32,6 +32,8 @@
#include <set>
#include <map>
+#include <libwebsockets.h>
+
#include "task.h"
typedef struct libwebsocket* clientid_t;
diff --git a/src/messagehandler.cc b/src/messagehandler.cc
index 5f3cafb..89b476a 100644
--- a/src/messagehandler.cc
+++ b/src/messagehandler.cc
@@ -32,7 +32,7 @@
TaskManager taskman;
-MessageList handle_msg(MessageList msgList) {
+MessageList handle_msg(MessageList msgList, clientid_t wsi) {
MessageList::iterator it;
for(it = msgList.begin();
@@ -48,7 +48,7 @@ MessageList handle_msg(MessageList msgList) {
t.title = m.add.title;
t.desc = m.add.desc;
try {
- it->nodes = taskman.addTask(t, m.add.parentid);
+ it->nodes = taskman.addTask(t, m.add.parentid);
}
catch (std::exception& e) {
DEBUG(messagehandler, "Error adding task\n");
@@ -77,6 +77,12 @@ MessageList handle_msg(MessageList msgList) {
}
}
break;
+ case cmd::observe:
+ connection_handler.observe(wsi, m.observe.id);
+ break;
+ case cmd::unobserve:
+ connection_handler.unobserve(wsi, m.observe.id);
+ break;
case cmd::update:
{
INFO(messagehandler, "Handling update command\n");
diff --git a/src/messagehandler.h b/src/messagehandler.h
index 2651255..cc2c8a0 100644
--- a/src/messagehandler.h
+++ b/src/messagehandler.h
@@ -30,8 +30,9 @@
#include "messageparser.h"
+#include "connectionhandler.h"
-MessageList handle_msg(MessageList inMsgList);
+MessageList handle_msg(MessageList inMsgList, clientid_t wsi);
#endif/*__MUNIA_MSGHANDLER_H__*/
diff --git a/src/task_proto.cc b/src/munia_proto.cc
index 24be3b0..3679a81 100644
--- a/src/task_proto.cc
+++ b/src/munia_proto.cc
@@ -1,7 +1,7 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set et sw=2 ts=2: */
/***************************************************************************
- * task_proto.cc
+ * munia_proto.cc
*
* Fri Feb 24 08:23:16 CET 2012
* Copyright 2012 Bent Bisballe Nyeng
@@ -25,7 +25,7 @@
* along with Munia; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-#include "task_proto.h"
+#include "munia_proto.h"
#include <stdio.h>
#include <string.h>
@@ -91,9 +91,20 @@ int callback_lws_task(struct libwebsocket_context * context,
{
taskman.tree.toStdOut();
+ printf("Callback on %p\n", wsi);
+
switch (reason) {
+ case LWS_CALLBACK_ESTABLISHED:
+ connection_handler.init(wsi);
+ break;
+
+ case LWS_CALLBACK_CLOSED:
+ connection_handler.close(wsi);
+ break;
+
case LWS_CALLBACK_SERVER_WRITEABLE:
{
+ printf("Socket for client %p writable\n", wsi);
if(msgqueue[wsi].size() > 0) {
std::string msg = msgqueue[wsi].front();
msgqueue[wsi].pop();
@@ -108,6 +119,9 @@ int callback_lws_task(struct libwebsocket_context * context,
exit(1);
}
}
+ else {
+ printf("\tNo queued data awaiting transmission\n");
+ }
if(msgqueue[wsi].size()) {
libwebsocket_rx_flow_control(wsi, 1);
@@ -134,7 +148,7 @@ int callback_lws_task(struct libwebsocket_context * context,
MessageList mlst = parse_msg(data);
printf("Handling %d incoming message\n", mlst.size());
- MessageList omsgs = handle_msg(mlst);
+ MessageList omsgs = handle_msg(mlst, wsi);
printf("Handling %d outgoing messages\n", omsgs.size());
MessageList::iterator omi = omsgs.begin();
@@ -152,6 +166,8 @@ int callback_lws_task(struct libwebsocket_context * context,
std::set<clientid_t>::iterator ci = clients.begin();
while(ci != clients.end()) {
+ clientid_t clientid = *ci;
+ printf("\tAdding data to %p's queue\n", clientid);
msgqueue[*ci].push(msg);
ci++;
}
diff --git a/src/task_proto.h b/src/munia_proto.h
index 160dee9..db10c16 100644
--- a/src/task_proto.h
+++ b/src/munia_proto.h
@@ -1,7 +1,7 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set et sw=2 ts=2: */
/***************************************************************************
- * task_proto.h
+ * munia_proto.h
*
* Fri Feb 24 08:23:15 CET 2012
* Copyright 2012 Bent Bisballe Nyeng
@@ -25,8 +25,8 @@
* along with Munia; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-#ifndef __MUNIA_TASK_PROTO_H__
-#define __MUNIA_TASK_PROTO_H__
+#ifndef __MUNIA_MUNIA_PROTO_H__
+#define __MUNIA_MUNIA_PROTO_H__
#include <stdlib.h>
@@ -41,4 +41,4 @@ struct per_session_data__lws_task {
struct libwebsocket *wsi;
};
-#endif/*__MUNIA_TASK_PROTO_H__*/
+#endif/*__MUNIA_MUNIA_PROTO_H__*/
diff --git a/src/muniad.cc b/src/muniad.cc
index 2307160..34f5c6a 100644
--- a/src/muniad.cc
+++ b/src/muniad.cc
@@ -36,8 +36,7 @@
#include <libwebsockets.h>
#include "http.h"
-#include "task_proto.h"
-#include "observe_proto.h"
+#include "munia_proto.h"
#include "debug.h"
static struct libwebsocket_protocols protocols[] = {
@@ -46,9 +45,6 @@ static struct libwebsocket_protocols protocols[] = {
{ "lws-task-protocol", callback_lws_task,
sizeof(struct per_session_data__lws_task)
},
- { "lws-observe-protocol", callback_lws_observe,
- sizeof(struct per_session_data__lws_observe)
- },
{ NULL, NULL, 0 } // End of list
};
diff --git a/src/observe_proto.cc b/src/observe_proto.cc
deleted file mode 100644
index e8f78de..0000000
--- a/src/observe_proto.cc
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set et sw=2 ts=2: */
-/***************************************************************************
- * observe_proto.cc
- *
- * Fri Mar 23 15:29:13 CET 2012
- * Copyright 2012 Bent Bisballe Nyeng
- * deva@aasimon.org
- ****************************************************************************/
-
-/*
- * This file is part of Munia.
- *
- * Munia is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * Munia is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Munia; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-#include "observe_proto.h"
-
-#include <stdio.h>
-#include <string.h>
-
-#include <queue>
-#include <map>
-
-#include "task.h"
-#include "messageparser.h"
-
-#include "connectionhandler.h"
-
-int callback_lws_observe(struct libwebsocket_context *context,
- struct libwebsocket *wsi,
- enum libwebsocket_callback_reasons reason,
- void *user, void *in, size_t len)
-{
- switch (reason) {
- case LWS_CALLBACK_ESTABLISHED:
- connection_handler.init(wsi);
- break;
-
- case LWS_CALLBACK_CLOSED:
- connection_handler.close(wsi);
- break;
-
- case LWS_CALLBACK_RECEIVE:
- {
- std::string data;
- data.append((char*)in, len);
-
- MessageList mlst = parse_msg(data);
- for(MessageList::iterator i = mlst.begin(); i != mlst.end(); i++) {
- message_t m = *i;
- switch(m.cmd) {
- case cmd::observe: {
- connection_handler.observe(wsi, m.observe.id);
- break;
- }
- case cmd::unobserve: {
- connection_handler.unobserve(wsi, m.observe.id);
- break;
- }
- default:
- printf("Wrong command :(\n");
- break;
- }
- }
- }
- break;
-
- default:
- break;
- }
-
- return 0;
-}
diff --git a/src/observe_proto.h b/src/observe_proto.h
deleted file mode 100644
index 6ef1e66..0000000
--- a/src/observe_proto.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set et sw=2 ts=2: */
-/***************************************************************************
- * observe_proto.h
- *
- * Fri Mar 23 15:29:13 CET 2012
- * Copyright 2012 Bent Bisballe Nyeng
- * deva@aasimon.org
- ****************************************************************************/
-
-/*
- * This file is part of Munia.
- *
- * Munia is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * Munia is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Munia; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-#ifndef __MUNIA_OBSERVE_PROTO_H__
-#define __MUNIA_OBSERVE_PROTO_H__
-
-#include <stdlib.h>
-
-#include <libwebsockets.h>
-
-int callback_lws_observe(struct libwebsocket_context *context,
- struct libwebsocket *wsi,
- enum libwebsocket_callback_reasons reason,
- void *user, void *in, size_t len);
-
-struct per_session_data__lws_observe {
- struct libwebsocket *wsi;
-};
-
-#endif/*__MUNIA_OBSERVE_PROTO_H__*/