shmem: properly initialize received multipart messages

This commit is contained in:
Alexey Rybalchenko
2019-12-16 17:15:08 +01:00
committed by Dennis Klein
parent e6dede492e
commit b2e027478e
3 changed files with 34 additions and 13 deletions

View File

@@ -60,6 +60,27 @@ FairMQMessageSHM::FairMQMessageSHM(Manager& manager, const size_t size, FairMQTr
InitializeChunk(size);
}
FairMQMessageSHM::FairMQMessageSHM(Manager& manager, MetaHeader* hdr, FairMQTransportFactory* factory)
: FairMQMessage{factory}
, fManager(manager)
, fMessage()
, fQueued(false)
, fMetaCreated(false)
, fRegionId(hdr->fRegionId)
, fRegionPtr(nullptr)
, fHandle(hdr->fHandle)
, fSize(hdr->fSize)
, fHint(hdr->fHint)
, fLocalPtr(nullptr)
{
if (zmq_msg_init_size(&fMessage, sizeof(MetaHeader)) != 0) {
LOG(error) << "failed initializing message, reason: " << zmq_strerror(errno);
}
// fill the zmq buffer with the delivered meta data
memcpy(zmq_msg_data(&fMessage), hdr, sizeof(MetaHeader));
fMetaCreated = true;
}
FairMQMessageSHM::FairMQMessageSHM(Manager& manager, void* data, const size_t size, fairmq_free_fn* ffn, void* hint, FairMQTransportFactory* factory)
: FairMQMessage{factory}
, fManager(manager)