From: Michal 'vorner' Vaner Date: Thu, 17 May 2012 13:32:36 +0000 (+0200) Subject: [1914] Store the request into a queue X-Git-Tag: trac2351_base~226^2~89^2~13 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b174ac98fbe2c9bae96edd0faf2e8884cbbac4fd;p=thirdparty%2Fkea.git [1914] Store the request into a queue The requests submitted by groupReadMsgAsync are stored into the list. The tests still fail, since nothing is interested in the content of the list yet. --- diff --git a/src/lib/config/ccsession.cc b/src/lib/config/ccsession.cc index 63fa4cdcf9..38474c8141 100644 --- a/src/lib/config/ccsession.cc +++ b/src/lib/config/ccsession.cc @@ -764,5 +764,27 @@ ModuleCCSession::sendStopping() { session_.group_sendmsg(cmd, "ConfigManager"); } +class ModuleCCSession::AsyncRecvRequest { +public: // Everything is public here, as the definition is hidden anyway + AsyncRecvCallback callback; + string recipient; + int seq; + bool is_reply; +}; + +ModuleCCSession::AsyncRecvRequestID +ModuleCCSession::groupRecvMsgAsync(const AsyncRecvCallback& callback, + bool is_reply, int seq, + const string& recipient) { + // This just stores the request, the handling is done in checkCommand() + boost::shared_ptr request(new AsyncRecvRequest); + request->callback = callback; + request->recipient = recipient; + request->seq = seq; + request->is_reply = is_reply; + // push_back would be simpler, but it does not return the iterator we need + return (async_recv_requests_.insert(async_recv_requests_.end(), request)); +} + } } diff --git a/src/lib/config/ccsession.h b/src/lib/config/ccsession.h index 66b8896f08..7d2bb71f86 100644 --- a/src/lib/config/ccsession.h +++ b/src/lib/config/ccsession.h @@ -451,7 +451,7 @@ public: /// callback or can be used to cancel the request by cancelAsyncRecv. /// \todo Decide what to do with instance and what was it meant for anyway. AsyncRecvRequestID groupRecvMsgAsync(const AsyncRecvCallback& callback, - bool is_reply = true, int seq = -1, + bool is_reply, int seq = -1, const std::string& recipient = std::string());