mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-13 08:41:16 +00:00
FairMQ: Add hint argument to the region callback, settable per message.
This commit is contained in:
parent
ba78964e29
commit
b59f1b950d
|
@ -52,7 +52,7 @@ class FairMQTransportFactory
|
||||||
/// @return pointer to FairMQMessage
|
/// @return pointer to FairMQMessage
|
||||||
virtual FairMQMessagePtr CreateMessage(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr) const = 0;
|
virtual FairMQMessagePtr CreateMessage(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr) const = 0;
|
||||||
|
|
||||||
virtual FairMQMessagePtr CreateMessage(FairMQUnmanagedRegionPtr& unmanagedRegion, void* data, const size_t size) const = 0;
|
virtual FairMQMessagePtr CreateMessage(FairMQUnmanagedRegionPtr& unmanagedRegion, void* data, const size_t size, void* hint = 0) const = 0;
|
||||||
|
|
||||||
/// Create a socket
|
/// Create a socket
|
||||||
virtual FairMQSocketPtr CreateSocket(const std::string& type, const std::string& name) const = 0;
|
virtual FairMQSocketPtr CreateSocket(const std::string& type, const std::string& name) const = 0;
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#include <memory> // std::unique_ptr
|
#include <memory> // std::unique_ptr
|
||||||
#include <functional> // std::function
|
#include <functional> // std::function
|
||||||
|
|
||||||
using FairMQRegionCallback = std::function<void(void*, size_t)>;
|
using FairMQRegionCallback = std::function<void(void*, size_t, void*)>;
|
||||||
|
|
||||||
class FairMQUnmanagedRegion
|
class FairMQUnmanagedRegion
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,6 +27,7 @@ FairMQ::Transport FairMQMessageNN::fTransportType = FairMQ::Transport::NN;
|
||||||
FairMQMessageNN::FairMQMessageNN()
|
FairMQMessageNN::FairMQMessageNN()
|
||||||
: fMessage(nullptr)
|
: fMessage(nullptr)
|
||||||
, fSize(0)
|
, fSize(0)
|
||||||
|
, fHint(0)
|
||||||
, fReceiving(false)
|
, fReceiving(false)
|
||||||
, fRegionPtr(nullptr)
|
, fRegionPtr(nullptr)
|
||||||
{
|
{
|
||||||
|
@ -40,6 +41,7 @@ FairMQMessageNN::FairMQMessageNN()
|
||||||
FairMQMessageNN::FairMQMessageNN(const size_t size)
|
FairMQMessageNN::FairMQMessageNN(const size_t size)
|
||||||
: fMessage(nullptr)
|
: fMessage(nullptr)
|
||||||
, fSize(0)
|
, fSize(0)
|
||||||
|
, fHint(0)
|
||||||
, fReceiving(false)
|
, fReceiving(false)
|
||||||
, fRegionPtr(nullptr)
|
, fRegionPtr(nullptr)
|
||||||
{
|
{
|
||||||
|
@ -60,6 +62,7 @@ FairMQMessageNN::FairMQMessageNN(const size_t size)
|
||||||
FairMQMessageNN::FairMQMessageNN(void* data, const size_t size, fairmq_free_fn* ffn, void* hint)
|
FairMQMessageNN::FairMQMessageNN(void* data, const size_t size, fairmq_free_fn* ffn, void* hint)
|
||||||
: fMessage(nullptr)
|
: fMessage(nullptr)
|
||||||
, fSize(0)
|
, fSize(0)
|
||||||
|
, fHint(0)
|
||||||
, fReceiving(false)
|
, fReceiving(false)
|
||||||
, fRegionPtr(nullptr)
|
, fRegionPtr(nullptr)
|
||||||
{
|
{
|
||||||
|
@ -83,9 +86,10 @@ FairMQMessageNN::FairMQMessageNN(void* data, const size_t size, fairmq_free_fn*
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FairMQMessageNN::FairMQMessageNN(FairMQUnmanagedRegionPtr& region, void* data, const size_t size)
|
FairMQMessageNN::FairMQMessageNN(FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint)
|
||||||
: fMessage(data)
|
: fMessage(data)
|
||||||
, fSize(size)
|
, fSize(size)
|
||||||
|
, fHint(reinterpret_cast<size_t>(hint))
|
||||||
, fReceiving(false)
|
, fReceiving(false)
|
||||||
, fRegionPtr(region.get())
|
, fRegionPtr(region.get())
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,7 +32,7 @@ class FairMQMessageNN : public FairMQMessage
|
||||||
FairMQMessageNN();
|
FairMQMessageNN();
|
||||||
FairMQMessageNN(const size_t size);
|
FairMQMessageNN(const size_t size);
|
||||||
FairMQMessageNN(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr);
|
FairMQMessageNN(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr);
|
||||||
FairMQMessageNN(FairMQUnmanagedRegionPtr& region, void* data, const size_t size);
|
FairMQMessageNN(FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint = 0);
|
||||||
|
|
||||||
FairMQMessageNN(const FairMQMessageNN&) = delete;
|
FairMQMessageNN(const FairMQMessageNN&) = delete;
|
||||||
FairMQMessageNN operator=(const FairMQMessageNN&) = delete;
|
FairMQMessageNN operator=(const FairMQMessageNN&) = delete;
|
||||||
|
@ -56,6 +56,7 @@ class FairMQMessageNN : public FairMQMessage
|
||||||
private:
|
private:
|
||||||
void* fMessage;
|
void* fMessage;
|
||||||
size_t fSize;
|
size_t fSize;
|
||||||
|
size_t fHint;
|
||||||
bool fReceiving;
|
bool fReceiving;
|
||||||
FairMQUnmanagedRegion* fRegionPtr;
|
FairMQUnmanagedRegion* fRegionPtr;
|
||||||
static FairMQ::Transport fTransportType;
|
static FairMQ::Transport fTransportType;
|
||||||
|
|
|
@ -138,7 +138,7 @@ int FairMQSocketNN::Send(FairMQMessagePtr& msg, const int flags)
|
||||||
{
|
{
|
||||||
nbytes = nn_send(fSocket, bufPtr, msg->GetSize(), flags);
|
nbytes = nn_send(fSocket, bufPtr, msg->GetSize(), flags);
|
||||||
// nn_send copies the data, safe to call region callback here
|
// nn_send copies the data, safe to call region callback here
|
||||||
static_cast<FairMQUnmanagedRegionNN*>(msgPtr->fRegionPtr)->fCallback(bufPtr, msg->GetSize());
|
static_cast<FairMQUnmanagedRegionNN*>(msgPtr->fRegionPtr)->fCallback(bufPtr, msg->GetSize(), reinterpret_cast<void*>(msgPtr->fHint));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nbytes >= 0)
|
if (nbytes >= 0)
|
||||||
|
@ -252,7 +252,7 @@ int64_t FairMQSocketNN::Send(vector<FairMQMessagePtr>& msgVec, const int flags)
|
||||||
// call region callback
|
// call region callback
|
||||||
if (partPtr->fRegionPtr)
|
if (partPtr->fRegionPtr)
|
||||||
{
|
{
|
||||||
static_cast<FairMQUnmanagedRegionNN*>(partPtr->fRegionPtr)->fCallback(partPtr->GetMessage(), msgVec[i]->GetSize());
|
static_cast<FairMQUnmanagedRegionNN*>(partPtr->fRegionPtr)->fCallback(partPtr->GetMessage(), partPtr->GetSize(), reinterpret_cast<void*>(partPtr->fHint));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,9 +35,9 @@ FairMQMessagePtr FairMQTransportFactoryNN::CreateMessage(void* data, const size_
|
||||||
return unique_ptr<FairMQMessage>(new FairMQMessageNN(data, size, ffn, hint));
|
return unique_ptr<FairMQMessage>(new FairMQMessageNN(data, size, ffn, hint));
|
||||||
}
|
}
|
||||||
|
|
||||||
FairMQMessagePtr FairMQTransportFactoryNN::CreateMessage(FairMQUnmanagedRegionPtr& region, void* data, const size_t size) const
|
FairMQMessagePtr FairMQTransportFactoryNN::CreateMessage(FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint) const
|
||||||
{
|
{
|
||||||
return unique_ptr<FairMQMessage>(new FairMQMessageNN(region, data, size));
|
return unique_ptr<FairMQMessage>(new FairMQMessageNN(region, data, size, hint));
|
||||||
}
|
}
|
||||||
|
|
||||||
FairMQSocketPtr FairMQTransportFactoryNN::CreateSocket(const string& type, const string& name) const
|
FairMQSocketPtr FairMQTransportFactoryNN::CreateSocket(const string& type, const string& name) const
|
||||||
|
|
|
@ -28,7 +28,7 @@ class FairMQTransportFactoryNN : public FairMQTransportFactory
|
||||||
FairMQMessagePtr CreateMessage() const override;
|
FairMQMessagePtr CreateMessage() const override;
|
||||||
FairMQMessagePtr CreateMessage(const size_t size) const override;
|
FairMQMessagePtr CreateMessage(const size_t size) const override;
|
||||||
FairMQMessagePtr CreateMessage(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr) const override;
|
FairMQMessagePtr CreateMessage(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr) const override;
|
||||||
FairMQMessagePtr CreateMessage(FairMQUnmanagedRegionPtr& region, void* data, const size_t size) const override;
|
FairMQMessagePtr CreateMessage(FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint = 0) const override;
|
||||||
|
|
||||||
FairMQSocketPtr CreateSocket(const std::string& type, const std::string& name) const override;
|
FairMQSocketPtr CreateSocket(const std::string& type, const std::string& name) const override;
|
||||||
|
|
||||||
|
|
|
@ -46,11 +46,12 @@ struct MonitorStatus
|
||||||
bool fActive;
|
bool fActive;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct alignas(32) MetaHeader
|
struct MetaHeader
|
||||||
{
|
{
|
||||||
uint64_t fSize;
|
size_t fSize;
|
||||||
uint64_t fRegionId;
|
size_t fRegionId;
|
||||||
boost::interprocess::managed_shared_memory::handle_t fHandle;
|
boost::interprocess::managed_shared_memory::handle_t fHandle;
|
||||||
|
size_t fHint;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct RegionBlock
|
struct RegionBlock
|
||||||
|
@ -58,15 +59,18 @@ struct RegionBlock
|
||||||
RegionBlock()
|
RegionBlock()
|
||||||
: fHandle()
|
: fHandle()
|
||||||
, fSize(0)
|
, fSize(0)
|
||||||
|
, fHint(0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
RegionBlock(boost::interprocess::managed_shared_memory::handle_t handle, size_t size)
|
RegionBlock(boost::interprocess::managed_shared_memory::handle_t handle, size_t size, size_t hint)
|
||||||
: fHandle(handle)
|
: fHandle(handle)
|
||||||
, fSize(size)
|
, fSize(size)
|
||||||
|
, fHint(hint)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
boost::interprocess::managed_shared_memory::handle_t fHandle;
|
boost::interprocess::managed_shared_memory::handle_t fHandle;
|
||||||
size_t fSize;
|
size_t fSize;
|
||||||
|
size_t fHint;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace shmem
|
} // namespace shmem
|
||||||
|
|
|
@ -34,6 +34,7 @@ FairMQMessageSHM::FairMQMessageSHM(Manager& manager)
|
||||||
, fRegionPtr(nullptr)
|
, fRegionPtr(nullptr)
|
||||||
, fHandle(-1)
|
, fHandle(-1)
|
||||||
, fSize(0)
|
, fSize(0)
|
||||||
|
, fHint(0)
|
||||||
, fLocalPtr(nullptr)
|
, fLocalPtr(nullptr)
|
||||||
{
|
{
|
||||||
if (zmq_msg_init(&fMessage) != 0)
|
if (zmq_msg_init(&fMessage) != 0)
|
||||||
|
@ -52,6 +53,7 @@ FairMQMessageSHM::FairMQMessageSHM(Manager& manager, const size_t size)
|
||||||
, fRegionPtr(nullptr)
|
, fRegionPtr(nullptr)
|
||||||
, fHandle(-1)
|
, fHandle(-1)
|
||||||
, fSize(0)
|
, fSize(0)
|
||||||
|
, fHint(0)
|
||||||
, fLocalPtr(nullptr)
|
, fLocalPtr(nullptr)
|
||||||
{
|
{
|
||||||
InitializeChunk(size);
|
InitializeChunk(size);
|
||||||
|
@ -66,6 +68,7 @@ FairMQMessageSHM::FairMQMessageSHM(Manager& manager, void* data, const size_t si
|
||||||
, fRegionPtr(nullptr)
|
, fRegionPtr(nullptr)
|
||||||
, fHandle(-1)
|
, fHandle(-1)
|
||||||
, fSize(0)
|
, fSize(0)
|
||||||
|
, fHint(0)
|
||||||
, fLocalPtr(nullptr)
|
, fLocalPtr(nullptr)
|
||||||
{
|
{
|
||||||
if (InitializeChunk(size))
|
if (InitializeChunk(size))
|
||||||
|
@ -82,7 +85,7 @@ FairMQMessageSHM::FairMQMessageSHM(Manager& manager, void* data, const size_t si
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FairMQMessageSHM::FairMQMessageSHM(Manager& manager, FairMQUnmanagedRegionPtr& region, void* data, const size_t size)
|
FairMQMessageSHM::FairMQMessageSHM(Manager& manager, FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint)
|
||||||
: fManager(manager)
|
: fManager(manager)
|
||||||
, fMessage()
|
, fMessage()
|
||||||
, fQueued(false)
|
, fQueued(false)
|
||||||
|
@ -91,23 +94,34 @@ FairMQMessageSHM::FairMQMessageSHM(Manager& manager, FairMQUnmanagedRegionPtr& r
|
||||||
, fRegionPtr(nullptr)
|
, fRegionPtr(nullptr)
|
||||||
, fHandle(-1)
|
, fHandle(-1)
|
||||||
, fSize(size)
|
, fSize(size)
|
||||||
|
, fHint(reinterpret_cast<size_t>(hint))
|
||||||
, fLocalPtr(static_cast<char*>(data))
|
, fLocalPtr(static_cast<char*>(data))
|
||||||
{
|
{
|
||||||
fHandle = (bipc::managed_shared_memory::handle_t)(reinterpret_cast<const char*>(data) - reinterpret_cast<const char*>(region->GetData()));
|
if (reinterpret_cast<const char*>(data) >= reinterpret_cast<const char*>(region->GetData()) ||
|
||||||
|
reinterpret_cast<const char*>(data) <= reinterpret_cast<const char*>(region->GetData()) + region->GetSize())
|
||||||
if (zmq_msg_init_size(&fMessage, sizeof(MetaHeader)) != 0)
|
|
||||||
{
|
{
|
||||||
LOG(ERROR) << "failed initializing meta message, reason: " << zmq_strerror(errno);
|
fHandle = (bipc::managed_shared_memory::handle_t)(reinterpret_cast<const char*>(data) - reinterpret_cast<const char*>(region->GetData()));
|
||||||
|
|
||||||
|
if (zmq_msg_init_size(&fMessage, sizeof(MetaHeader)) != 0)
|
||||||
|
{
|
||||||
|
LOG(ERROR) << "failed initializing meta message, reason: " << zmq_strerror(errno);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MetaHeader header;
|
||||||
|
header.fSize = size;
|
||||||
|
header.fHandle = fHandle;
|
||||||
|
header.fRegionId = fRegionId;
|
||||||
|
header.fHint = fHint;
|
||||||
|
memcpy(zmq_msg_data(&fMessage), &header, sizeof(MetaHeader));
|
||||||
|
|
||||||
|
fMetaCreated = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MetaHeader header;
|
LOG(ERROR) << "shmem: trying to create region message with data from outside the region";
|
||||||
header.fSize = size;
|
throw runtime_error("shmem: trying to create region message with data from outside the region");
|
||||||
header.fHandle = fHandle;
|
|
||||||
header.fRegionId = fRegionId;
|
|
||||||
memcpy(zmq_msg_data(&fMessage), &header, sizeof(MetaHeader));
|
|
||||||
|
|
||||||
fMetaCreated = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,6 +162,7 @@ bool FairMQMessageSHM::InitializeChunk(const size_t size)
|
||||||
header.fSize = size;
|
header.fSize = size;
|
||||||
header.fHandle = fHandle;
|
header.fHandle = fHandle;
|
||||||
header.fRegionId = fRegionId;
|
header.fRegionId = fRegionId;
|
||||||
|
header.fHint = fHint;
|
||||||
memcpy(zmq_msg_data(&fMessage), &header, sizeof(MetaHeader));
|
memcpy(zmq_msg_data(&fMessage), &header, sizeof(MetaHeader));
|
||||||
|
|
||||||
fMetaCreated = true;
|
fMetaCreated = true;
|
||||||
|
@ -343,7 +358,7 @@ void FairMQMessageSHM::CloseMessage()
|
||||||
// // }
|
// // }
|
||||||
|
|
||||||
// timed version
|
// timed version
|
||||||
RegionBlock block(fHandle, fSize);
|
RegionBlock block(fHandle, fSize, fHint);
|
||||||
bool success = false;
|
bool success = false;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,7 +30,7 @@ class FairMQMessageSHM : public FairMQMessage
|
||||||
FairMQMessageSHM(fair::mq::shmem::Manager& manager);
|
FairMQMessageSHM(fair::mq::shmem::Manager& manager);
|
||||||
FairMQMessageSHM(fair::mq::shmem::Manager& manager, const size_t size);
|
FairMQMessageSHM(fair::mq::shmem::Manager& manager, const size_t size);
|
||||||
FairMQMessageSHM(fair::mq::shmem::Manager& manager, void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr);
|
FairMQMessageSHM(fair::mq::shmem::Manager& manager, void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr);
|
||||||
FairMQMessageSHM(fair::mq::shmem::Manager& manager, FairMQUnmanagedRegionPtr& region, void* data, const size_t size);
|
FairMQMessageSHM(fair::mq::shmem::Manager& manager, FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint = 0);
|
||||||
|
|
||||||
FairMQMessageSHM(const FairMQMessageSHM&) = delete;
|
FairMQMessageSHM(const FairMQMessageSHM&) = delete;
|
||||||
FairMQMessageSHM operator=(const FairMQMessageSHM&) = delete;
|
FairMQMessageSHM operator=(const FairMQMessageSHM&) = delete;
|
||||||
|
@ -58,10 +58,11 @@ class FairMQMessageSHM : public FairMQMessage
|
||||||
bool fMetaCreated;
|
bool fMetaCreated;
|
||||||
static std::atomic<bool> fInterrupted;
|
static std::atomic<bool> fInterrupted;
|
||||||
static FairMQ::Transport fTransportType;
|
static FairMQ::Transport fTransportType;
|
||||||
uint64_t fRegionId;
|
size_t fRegionId;
|
||||||
mutable fair::mq::shmem::Region* fRegionPtr;
|
mutable fair::mq::shmem::Region* fRegionPtr;
|
||||||
boost::interprocess::managed_shared_memory::handle_t fHandle;
|
boost::interprocess::managed_shared_memory::handle_t fHandle;
|
||||||
size_t fSize;
|
size_t fSize;
|
||||||
|
size_t fHint;
|
||||||
mutable char* fLocalPtr;
|
mutable char* fLocalPtr;
|
||||||
|
|
||||||
bool InitializeChunk(const size_t size);
|
bool InitializeChunk(const size_t size);
|
||||||
|
|
|
@ -175,6 +175,7 @@ int FairMQSocketSHM::Receive(FairMQMessagePtr& msg, const int flags)
|
||||||
static_cast<FairMQMessageSHM*>(msg.get())->fHandle = hdr->fHandle;
|
static_cast<FairMQMessageSHM*>(msg.get())->fHandle = hdr->fHandle;
|
||||||
static_cast<FairMQMessageSHM*>(msg.get())->fSize = hdr->fSize;
|
static_cast<FairMQMessageSHM*>(msg.get())->fSize = hdr->fSize;
|
||||||
static_cast<FairMQMessageSHM*>(msg.get())->fRegionId = hdr->fRegionId;
|
static_cast<FairMQMessageSHM*>(msg.get())->fRegionId = hdr->fRegionId;
|
||||||
|
static_cast<FairMQMessageSHM*>(msg.get())->fHint = hdr->fHint;
|
||||||
size = msg->GetSize();
|
size = msg->GetSize();
|
||||||
|
|
||||||
fBytesRx += size;
|
fBytesRx += size;
|
||||||
|
@ -316,6 +317,7 @@ int64_t FairMQSocketSHM::Receive(vector<FairMQMessagePtr>& msgVec, const int fla
|
||||||
static_cast<FairMQMessageSHM*>(part.get())->fHandle = hdr->fHandle;
|
static_cast<FairMQMessageSHM*>(part.get())->fHandle = hdr->fHandle;
|
||||||
static_cast<FairMQMessageSHM*>(part.get())->fSize = hdr->fSize;
|
static_cast<FairMQMessageSHM*>(part.get())->fSize = hdr->fSize;
|
||||||
static_cast<FairMQMessageSHM*>(part.get())->fRegionId = hdr->fRegionId;
|
static_cast<FairMQMessageSHM*>(part.get())->fRegionId = hdr->fRegionId;
|
||||||
|
static_cast<FairMQMessageSHM*>(part.get())->fHint = hdr->fHint;
|
||||||
size = part->GetSize();
|
size = part->GetSize();
|
||||||
|
|
||||||
msgVec.push_back(move(part));
|
msgVec.push_back(move(part));
|
||||||
|
|
|
@ -214,9 +214,9 @@ FairMQMessagePtr FairMQTransportFactorySHM::CreateMessage(void* data, const size
|
||||||
return unique_ptr<FairMQMessage>(new FairMQMessageSHM(*fManager, data, size, ffn, hint));
|
return unique_ptr<FairMQMessage>(new FairMQMessageSHM(*fManager, data, size, ffn, hint));
|
||||||
}
|
}
|
||||||
|
|
||||||
FairMQMessagePtr FairMQTransportFactorySHM::CreateMessage(FairMQUnmanagedRegionPtr& region, void* data, const size_t size) const
|
FairMQMessagePtr FairMQTransportFactorySHM::CreateMessage(FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint) const
|
||||||
{
|
{
|
||||||
return unique_ptr<FairMQMessage>(new FairMQMessageSHM(*fManager, region, data, size));
|
return unique_ptr<FairMQMessage>(new FairMQMessageSHM(*fManager, region, data, size, hint));
|
||||||
}
|
}
|
||||||
|
|
||||||
FairMQSocketPtr FairMQTransportFactorySHM::CreateSocket(const string& type, const string& name) const
|
FairMQSocketPtr FairMQTransportFactorySHM::CreateSocket(const string& type, const string& name) const
|
||||||
|
|
|
@ -36,7 +36,7 @@ class FairMQTransportFactorySHM : public FairMQTransportFactory
|
||||||
FairMQMessagePtr CreateMessage() const override;
|
FairMQMessagePtr CreateMessage() const override;
|
||||||
FairMQMessagePtr CreateMessage(const size_t size) const override;
|
FairMQMessagePtr CreateMessage(const size_t size) const override;
|
||||||
FairMQMessagePtr CreateMessage(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr) const override;
|
FairMQMessagePtr CreateMessage(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr) const override;
|
||||||
FairMQMessagePtr CreateMessage(FairMQUnmanagedRegionPtr& region, void* data, const size_t size) const override;
|
FairMQMessagePtr CreateMessage(FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint = 0) const override;
|
||||||
|
|
||||||
FairMQSocketPtr CreateSocket(const std::string& type, const std::string& name) const override;
|
FairMQSocketPtr CreateSocket(const std::string& type, const std::string& name) const override;
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,7 @@ void Region::ReceiveAcks()
|
||||||
// LOG(DEBUG) << "received: " << block.fHandle << " " << block.fSize << " " << block.fMessageId;
|
// LOG(DEBUG) << "received: " << block.fHandle << " " << block.fSize << " " << block.fMessageId;
|
||||||
if (fCallback)
|
if (fCallback)
|
||||||
{
|
{
|
||||||
fCallback(reinterpret_cast<char*>(fRegion.get_address()) + block.fHandle, block.fSize);
|
fCallback(reinterpret_cast<char*>(fRegion.get_address()) + block.fHandle, block.fSize, reinterpret_cast<void*>(block.fHint));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -58,7 +58,7 @@ FairMQMessageZMQ::FairMQMessageZMQ(void* data, const size_t size, fairmq_free_fn
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FairMQMessageZMQ::FairMQMessageZMQ(FairMQUnmanagedRegionPtr& region, void* data, const size_t size)
|
FairMQMessageZMQ::FairMQMessageZMQ(FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint)
|
||||||
: fUsedSizeModified(false)
|
: fUsedSizeModified(false)
|
||||||
, fUsedSize()
|
, fUsedSize()
|
||||||
, fMsg(fair::mq::tools::make_unique<zmq_msg_t>())
|
, fMsg(fair::mq::tools::make_unique<zmq_msg_t>())
|
||||||
|
@ -74,7 +74,7 @@ FairMQMessageZMQ::FairMQMessageZMQ(FairMQUnmanagedRegionPtr& region, void* data,
|
||||||
|
|
||||||
memcpy(zmq_msg_data(fMsg.get()), data, size);
|
memcpy(zmq_msg_data(fMsg.get()), data, size);
|
||||||
// call region callback
|
// call region callback
|
||||||
static_cast<FairMQUnmanagedRegionZMQ*>(region.get())->fCallback(data, size);
|
static_cast<FairMQUnmanagedRegionZMQ*>(region.get())->fCallback(data, size, hint);
|
||||||
|
|
||||||
// if (zmq_msg_init_data(fMsg.get(), data, size, [](void*, void*){}, nullptr) != 0)
|
// if (zmq_msg_init_data(fMsg.get(), data, size, [](void*, void*){}, nullptr) != 0)
|
||||||
// {
|
// {
|
||||||
|
|
|
@ -34,7 +34,7 @@ class FairMQMessageZMQ : public FairMQMessage
|
||||||
FairMQMessageZMQ();
|
FairMQMessageZMQ();
|
||||||
FairMQMessageZMQ(const size_t size);
|
FairMQMessageZMQ(const size_t size);
|
||||||
FairMQMessageZMQ(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr);
|
FairMQMessageZMQ(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr);
|
||||||
FairMQMessageZMQ(FairMQUnmanagedRegionPtr& region, void* data, const size_t size);
|
FairMQMessageZMQ(FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint = 0);
|
||||||
|
|
||||||
void Rebuild() override;
|
void Rebuild() override;
|
||||||
void Rebuild(const size_t size) override;
|
void Rebuild(const size_t size) override;
|
||||||
|
|
|
@ -64,9 +64,9 @@ FairMQMessagePtr FairMQTransportFactoryZMQ::CreateMessage(void* data, const size
|
||||||
return unique_ptr<FairMQMessage>(new FairMQMessageZMQ(data, size, ffn, hint));
|
return unique_ptr<FairMQMessage>(new FairMQMessageZMQ(data, size, ffn, hint));
|
||||||
}
|
}
|
||||||
|
|
||||||
FairMQMessagePtr FairMQTransportFactoryZMQ::CreateMessage(FairMQUnmanagedRegionPtr& region, void* data, const size_t size) const
|
FairMQMessagePtr FairMQTransportFactoryZMQ::CreateMessage(FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint) const
|
||||||
{
|
{
|
||||||
return unique_ptr<FairMQMessage>(new FairMQMessageZMQ(region, data, size));
|
return unique_ptr<FairMQMessage>(new FairMQMessageZMQ(region, data, size, hint));
|
||||||
}
|
}
|
||||||
|
|
||||||
FairMQSocketPtr FairMQTransportFactoryZMQ::CreateSocket(const string& type, const string& name) const
|
FairMQSocketPtr FairMQTransportFactoryZMQ::CreateSocket(const string& type, const string& name) const
|
||||||
|
|
|
@ -37,7 +37,7 @@ class FairMQTransportFactoryZMQ : public FairMQTransportFactory
|
||||||
FairMQMessagePtr CreateMessage() const override;
|
FairMQMessagePtr CreateMessage() const override;
|
||||||
FairMQMessagePtr CreateMessage(const size_t size) const override;
|
FairMQMessagePtr CreateMessage(const size_t size) const override;
|
||||||
FairMQMessagePtr CreateMessage(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr) const override;
|
FairMQMessagePtr CreateMessage(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr) const override;
|
||||||
FairMQMessagePtr CreateMessage(FairMQUnmanagedRegionPtr& region, void* data, const size_t size) const override;
|
FairMQMessagePtr CreateMessage(FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint = 0) const override;
|
||||||
|
|
||||||
FairMQSocketPtr CreateSocket(const std::string& type, const std::string& name) const override;
|
FairMQSocketPtr CreateSocket(const std::string& type, const std::string& name) const override;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user