diff options
author | Jonas Suhr Christensen <jsc@umbraculum.org> | 2012-04-12 15:12:18 +0200 |
---|---|---|
committer | Jonas Suhr Christensen <jsc@umbraculum.org> | 2012-04-12 15:12:18 +0200 |
commit | e3c0c95f2ad3d25411c007ce4ffdb25084a1bc0d (patch) | |
tree | 6e4179bac871a91b842ccfff4aa69466f0787ad8 /src/munia_proto.cc | |
parent | fd373d0b0f580b56f3350e92207cfa499806ca4d (diff) |
Added observer id as prefix to server->client commands.
Diffstat (limited to 'src/munia_proto.cc')
-rw-r--r-- | src/munia_proto.cc | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/munia_proto.cc b/src/munia_proto.cc index 3679a81..b801009 100644 --- a/src/munia_proto.cc +++ b/src/munia_proto.cc @@ -153,22 +153,29 @@ int callback_lws_task(struct libwebsocket_context * context, MessageList::iterator omi = omsgs.begin(); while(omi != omsgs.end()) { - std::string msg; - msg.append((size_t)LWS_SEND_BUFFER_PRE_PADDING, ' '); - msg.append(msg_tostring(*omi)); - msg.append((size_t)LWS_SEND_BUFFER_POST_PADDING, ' '); + std::string msgcmd = msg_tostring(*omi); printf("%d nodes affected by command\n", omi->nodes.size()); - std::set<clientid_t> clients = + std::list<std::pair<clientid_t, taskid_t> > clients = connection_handler.observerlist(omi->nodes); printf("Writing message to %d clients\n", clients.size()); - std::set<clientid_t>::iterator ci = clients.begin(); + std::list<std::pair<clientid_t, taskid_t> >::iterator ci = clients.begin(); while(ci != clients.end()) { - clientid_t clientid = *ci; + std::string msg; + clientid_t clientid = (*ci).first; + char tidstr[32]; + sprintf(tidstr, "%u", (*ci).second); printf("\tAdding data to %p's queue\n", clientid); - msgqueue[*ci].push(msg); + + msg.append((size_t)LWS_SEND_BUFFER_PRE_PADDING, ' '); + msg.append(tidstr); + msg.append(" "); + msg.append(msgcmd); + msg.append((size_t)LWS_SEND_BUFFER_POST_PADDING, ' '); + + msgqueue[clientid].push(msg); ci++; } |