diff options
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++; } |