mirror of
https://github.com/badaix/snapcast.git
synced 2025-05-29 00:46:17 +02:00
reqid
git-svn-id: svn://elaine/murooma/trunk@313 d8a302eb-03bc-478d-80e4-98257eca68ef
This commit is contained in:
parent
e3344534fd
commit
b06a685c0c
1 changed files with 16 additions and 13 deletions
|
@ -10,7 +10,7 @@
|
|||
using namespace std;
|
||||
|
||||
|
||||
ClientConnection::ClientConnection(MessageReceiver* _receiver, const std::string& _ip, size_t _port) : active_(false), connected_(false), messageReceiver(_receiver), reqId(0), ip(_ip), port(_port), readerThread(NULL)
|
||||
ClientConnection::ClientConnection(MessageReceiver* _receiver, const std::string& _ip, size_t _port) : active_(false), connected_(false), messageReceiver(_receiver), reqId(1), ip(_ip), port(_port), readerThread(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -113,8 +113,8 @@ bool ClientConnection::send(BaseMessage* message)
|
|||
shared_ptr<SerializedMessage> ClientConnection::sendRequest(BaseMessage* message, size_t timeout)
|
||||
{
|
||||
shared_ptr<SerializedMessage> response(NULL);
|
||||
if (++reqId == 0)
|
||||
++reqId;
|
||||
if (++reqId == 10000)
|
||||
reqId = 1;
|
||||
message->id = reqId;
|
||||
shared_ptr<PendingRequest> pendingRequest(new PendingRequest(reqId));
|
||||
|
||||
|
@ -157,18 +157,21 @@ void ClientConnection::getNextMessage()
|
|||
baseMessage.received = t;
|
||||
|
||||
{
|
||||
std::unique_lock<std::mutex> mlock(mutex_);
|
||||
for (auto req: pendingRequests)
|
||||
std::unique_lock<std::mutex> mlock(mutex_);//, std::defer_lock);
|
||||
// if (mlock.try_lock_for(std::chrono::milliseconds(1000)))
|
||||
{
|
||||
if (req->id == baseMessage.refersTo)
|
||||
for (auto req: pendingRequests)
|
||||
{
|
||||
req->response.reset(new SerializedMessage());
|
||||
req->response->message = baseMessage;
|
||||
req->response->buffer = (char*)malloc(baseMessage.size);
|
||||
memcpy(req->response->buffer, &buffer[0], baseMessage.size);
|
||||
// std::unique_lock<std::mutex> lck(m);
|
||||
req->cv.notify_one();
|
||||
return;
|
||||
if (req->id == baseMessage.refersTo)
|
||||
{
|
||||
req->response.reset(new SerializedMessage());
|
||||
req->response->message = baseMessage;
|
||||
req->response->buffer = (char*)malloc(baseMessage.size);
|
||||
memcpy(req->response->buffer, &buffer[0], baseMessage.size);
|
||||
// std::unique_lock<std::mutex> lck(m);
|
||||
req->cv.notify_one();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue