mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-13 16:46:47 +00:00
Fix recv logic
This commit is contained in:
parent
90fdcc26bb
commit
cc8fd73025
|
@ -329,7 +329,6 @@ auto Socket::SendQueueReader() -> void
|
||||||
fMessagesTx++;
|
fMessagesTx++;
|
||||||
fSendPushSem.signal();
|
fSendPushSem.signal();
|
||||||
});
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
fDataEndpoint->send(
|
fDataEndpoint->send(
|
||||||
buffer, [&, size, msg2 = std::move(msg)](boost::asio::mutable_buffer) mutable {
|
buffer, [&, size, msg2 = std::move(msg)](boost::asio::mutable_buffer) mutable {
|
||||||
|
@ -477,21 +476,24 @@ auto Socket::DataMessageReceived(MessagePtr msg) -> void
|
||||||
{
|
{
|
||||||
if (fMultiPartRecvCounter > 0) {
|
if (fMultiPartRecvCounter > 0) {
|
||||||
--fMultiPartRecvCounter;
|
--fMultiPartRecvCounter;
|
||||||
fInflightMultiPartMessage.emplace_back(std::move(msg));
|
fInflightMultiPartMessage.push_back(std::move(msg));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_lock<std::mutex> lk(fRecvQueueMutex);
|
|
||||||
if (fMultiPartRecvCounter == 0) {
|
if (fMultiPartRecvCounter == 0) {
|
||||||
|
std::unique_lock<std::mutex> lk(fRecvQueueMutex);
|
||||||
fRecvQueue.push(std::move(fInflightMultiPartMessage));
|
fRecvQueue.push(std::move(fInflightMultiPartMessage));
|
||||||
|
lk.unlock();
|
||||||
fMultiPartRecvCounter = -1;
|
fMultiPartRecvCounter = -1;
|
||||||
} else {
|
fRecvPopSem.signal();
|
||||||
|
} else if (fMultiPartRecvCounter == -1) {
|
||||||
std::vector<MessagePtr> msgVec;
|
std::vector<MessagePtr> msgVec;
|
||||||
msgVec.push_back(std::move(msg));
|
msgVec.push_back(std::move(msg));
|
||||||
|
std::unique_lock<std::mutex> lk(fRecvQueueMutex);
|
||||||
fRecvQueue.push(std::move(msgVec));
|
fRecvQueue.push(std::move(msgVec));
|
||||||
|
lk.unlock();
|
||||||
|
fRecvPopSem.signal();
|
||||||
}
|
}
|
||||||
lk.unlock();
|
|
||||||
|
|
||||||
fRecvPopSem.signal();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
auto Socket::Close() -> void {}
|
auto Socket::Close() -> void {}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user