mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-13 08:41:16 +00:00
shm: avoid meta data copy on recv and fix its alignment
This commit is contained in:
parent
4dbb5535c3
commit
5c9ba5e5b4
|
@ -161,11 +161,9 @@ class Socket final : public fair::mq::Socket
|
||||||
int elapsed = 0;
|
int elapsed = 0;
|
||||||
|
|
||||||
Message* shmMsg = static_cast<Message*>(msg.get());
|
Message* shmMsg = static_cast<Message*>(msg.get());
|
||||||
ZMsg zmqMsg(sizeof(MetaHeader));
|
|
||||||
std::memcpy(zmqMsg.Data(), &(shmMsg->fMeta), sizeof(MetaHeader));
|
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
int nbytes = zmq_msg_send(zmqMsg.Msg(), fSocket, flags);
|
int nbytes = zmq_send(fSocket, &(shmMsg->fMeta), sizeof(MetaHeader), flags);
|
||||||
if (nbytes > 0) {
|
if (nbytes > 0) {
|
||||||
shmMsg->fQueued = true;
|
shmMsg->fQueued = true;
|
||||||
++fMessagesTx;
|
++fMessagesTx;
|
||||||
|
@ -196,11 +194,9 @@ class Socket final : public fair::mq::Socket
|
||||||
}
|
}
|
||||||
int elapsed = 0;
|
int elapsed = 0;
|
||||||
|
|
||||||
ZMsg zmqMsg;
|
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
Message* shmMsg = static_cast<Message*>(msg.get());
|
Message* shmMsg = static_cast<Message*>(msg.get());
|
||||||
int nbytes = zmq_msg_recv(zmqMsg.Msg(), fSocket, flags);
|
int nbytes = zmq_recv(fSocket, &(shmMsg->fMeta), sizeof(MetaHeader), flags);
|
||||||
if (nbytes > 0) {
|
if (nbytes > 0) {
|
||||||
// check for number of received messages. must be 1
|
// check for number of received messages. must be 1
|
||||||
if (nbytes != sizeof(MetaHeader)) {
|
if (nbytes != sizeof(MetaHeader)) {
|
||||||
|
@ -210,10 +206,7 @@ class Socket final : public fair::mq::Socket
|
||||||
"Expected size of ", sizeof(MetaHeader), " bytes, received ", nbytes));
|
"Expected size of ", sizeof(MetaHeader), " bytes, received ", nbytes));
|
||||||
}
|
}
|
||||||
|
|
||||||
MetaHeader* hdr = static_cast<MetaHeader*>(zmqMsg.Data());
|
size_t size = shmMsg->GetSize();
|
||||||
size_t size = hdr->fSize;
|
|
||||||
shmMsg->fMeta = *hdr;
|
|
||||||
|
|
||||||
fBytesRx += size;
|
fBytesRx += size;
|
||||||
++fMessagesRx;
|
++fMessagesRx;
|
||||||
return size;
|
return size;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user