sync send

git-svn-id: svn://elaine/murooma/trunk@256 d8a302eb-03bc-478d-80e4-98257eca68ef
This commit is contained in:
(no author) 2014-09-13 18:45:54 +00:00
parent 979f6460d3
commit 3369363453
8 changed files with 111 additions and 25 deletions

View file

@ -6,6 +6,8 @@
#include <atomic>
#include <mutex>
#include <boost/asio.hpp>
#include <condition_variable>
#include <set>
#include "message.h"
@ -15,6 +17,16 @@ using boost::asio::ip::tcp;
class SocketConnection;
struct PendingRequest
{
PendingRequest(uint16_t reqId) : id(reqId), response(NULL) {};
uint16_t id;
BaseMessage* response;
std::condition_variable cv;
};
class MessageReceiver
{
public:
@ -29,7 +41,8 @@ public:
virtual ~SocketConnection();
virtual void start();
virtual void stop();
virtual void send(BaseMessage* _message);
virtual bool send(BaseMessage* _message);
virtual BaseMessage* sendRequest(BaseMessage* message, size_t timeout);
virtual bool active()
{
@ -57,6 +70,8 @@ protected:
tcp::resolver::iterator iterator;
std::thread* receiverThread;
mutable std::mutex mutex_;
std::set<std::shared_ptr<PendingRequest>> pendingRequests;
uint16_t reqId;
};