Add empty msg check for transport compatibility checker

This commit is contained in:
Alexey Rybalchenko 2021-06-24 10:50:37 +02:00 committed by Dennis Klein
parent a8bdb91165
commit 4dbb5535c3
4 changed files with 46 additions and 32 deletions

View File

@ -385,22 +385,7 @@ class FairMQChannel
void CheckSendCompatibility(FairMQMessagePtr& msg)
{
if (fTransportType != msg->GetType()) {
FairMQMessagePtr msgWrapper(NewMessage(
msg->GetData(),
msg->GetSize(),
[](void* /*data*/, void* _msg) { delete static_cast<FairMQMessage*>(_msg); },
msg.get()
));
msg.release();
msg = move(msgWrapper);
}
}
void CheckSendCompatibility(std::vector<FairMQMessagePtr>& msgVec)
{
for (auto& msg : msgVec) {
if (fTransportType != msg->GetType()) {
if (msg->GetSize() > 0) {
FairMQMessagePtr msgWrapper(NewMessage(
msg->GetData(),
msg->GetSize(),
@ -409,6 +394,30 @@ class FairMQChannel
));
msg.release();
msg = move(msgWrapper);
} else {
FairMQMessagePtr newMsg(NewMessage());
msg = move(newMsg);
}
}
}
void CheckSendCompatibility(std::vector<FairMQMessagePtr>& msgVec)
{
for (auto& msg : msgVec) {
if (fTransportType != msg->GetType()) {
if (msg->GetSize() > 0) {
FairMQMessagePtr msgWrapper(NewMessage(
msg->GetData(),
msg->GetSize(),
[](void* /*data*/, void* _msg) { delete static_cast<FairMQMessage*>(_msg); },
msg.get()
));
msg.release();
msg = move(msgWrapper);
} else {
FairMQMessagePtr newMsg(NewMessage());
msg = move(newMsg);
}
}
}
}
@ -425,7 +434,6 @@ class FairMQChannel
{
for (auto& msg : msgVec) {
if (fTransportType != msg->GetType()) {
FairMQMessagePtr newMsg(NewMessage());
msg = move(newMsg);
}

View File

@ -27,15 +27,13 @@ class Rep : public FairMQDevice
auto Run() -> void override
{
auto request1 = FairMQMessagePtr{NewMessage()};
if (Receive(request1, "data") >= 0)
{
if (Receive(request1, "data") >= 0) {
LOG(info) << "Received request 1";
auto reply = FairMQMessagePtr{NewMessage()};
Send(reply, "data");
}
auto request2 = FairMQMessagePtr{NewMessage()};
if (Receive(request2, "data") >= 0)
{
if (Receive(request2, "data") >= 0) {
LOG(info) << "Received request 2";
auto reply = FairMQMessagePtr{NewMessage()};
Send(reply, "data");

View File

@ -30,8 +30,7 @@ class Req : public FairMQDevice
Send(request, "data");
auto reply = FairMQMessagePtr{NewMessage()};
if (Receive(reply, "data") >= 0)
{
if (Receive(reply, "data") >= 0) {
LOG(info) << "received reply";
}
};

View File

@ -24,27 +24,36 @@ auto RunReqRep(string transport) -> void
{
size_t session{fair::mq::tools::UuidHash()};
auto rep = execute_result{ "", 0 };
auto rep = execute_result{"", 0};
thread rep_thread([&]() {
stringstream cmd;
cmd << runTestDevice << " --id rep_" << transport << " --control static "
<< "--session " << session << " --color false --mq-config \"" << mqConfig << "\"";
cmd << runTestDevice << " --id rep_" << transport
<< " --control static"
<< " --session " << session
<< " --color false"
<< " --mq-config \"" << mqConfig << "\"";
rep = execute(cmd.str(), "[REP]");
});
auto req1 = execute_result{ "", 0 };
auto req1 = execute_result{"", 0};
thread req1_thread([&]() {
stringstream cmd;
cmd << runTestDevice << " --id req_1" << transport << " --control static "
<< "--session " << session << " --color false --mq-config \"" << mqConfig << "\"";
cmd << runTestDevice << " --id req_1" << transport
<< " --control static"
<< " --session " << session
<< " --color false"
<< " --mq-config \"" << mqConfig << "\"";
req1 = execute(cmd.str(), "[REQ1]");
});
auto req2 = execute_result{ "", 0 };
auto req2 = execute_result{"", 0};
thread req2_thread([&]() {
stringstream cmd;
cmd << runTestDevice << " --id req_2" << transport << " --control static "
<< "--session " << session << " --color false --mq-config \"" << mqConfig << "\"";
cmd << runTestDevice << " --id req_2" << transport
<< " --control static"
<< " --session " << session
<< " --color false"
<< " --mq-config \"" << mqConfig << "\"";
req2 = execute(cmd.str(), "[REQ2]");
});