mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-15 09:31:45 +00:00
Set pointer to factory also when receiving multi-part
This commit is contained in:
committed by
Alexey Rybalchenko
parent
25fcf13985
commit
cc0c525e0d
@@ -31,8 +31,9 @@ namespace ofi
|
||||
|
||||
using namespace std;
|
||||
|
||||
Socket::Socket(Context& context, const string& type, const string& name, const string& id /*= ""*/)
|
||||
: fDataEndpoint(nullptr)
|
||||
Socket::Socket(Context& context, const string& type, const string& name, const string& id /*= ""*/, FairMQTransportFactory* fac)
|
||||
: FairMQSocket{fac}
|
||||
, fDataEndpoint(nullptr)
|
||||
, fDataCompletionQueueTx(nullptr)
|
||||
, fDataCompletionQueueRx(nullptr)
|
||||
, fId(id + "." + name + "." + type)
|
||||
@@ -515,7 +516,7 @@ auto Socket::ReceiveImpl(vector<FairMQMessagePtr>& msgVec, const int flags, cons
|
||||
//
|
||||
// do
|
||||
// {
|
||||
// FairMQMessagePtr part(new FairMQMessageSHM(fManager));
|
||||
// FairMQMessagePtr part(new FairMQMessageSHM(fManager, GetTransport()));
|
||||
// zmq_msg_t* msgPtr = static_cast<FairMQMessageSHM*>(part.get())->GetMessage();
|
||||
//
|
||||
// int nbytes = zmq_msg_recv(msgPtr, fSocket, flags);
|
||||
|
@@ -18,6 +18,7 @@
|
||||
#include <memory> // unique_ptr
|
||||
#include <netinet/in.h>
|
||||
#include <rdma/fabric.h>
|
||||
class FairMQTransportFactory;
|
||||
|
||||
namespace fair
|
||||
{
|
||||
@@ -35,7 +36,7 @@ namespace ofi
|
||||
class Socket final : public fair::mq::Socket
|
||||
{
|
||||
public:
|
||||
Socket(Context& factory, const std::string& type, const std::string& name, const std::string& id = "");
|
||||
Socket(Context& factory, const std::string& type, const std::string& name, const std::string& id = "", FairMQTransportFactory* fac);
|
||||
Socket(const Socket&) = delete;
|
||||
Socket operator=(const Socket&) = delete;
|
||||
|
||||
|
@@ -56,9 +56,9 @@ auto TransportFactory::CreateMessage(UnmanagedRegionPtr& region, void* data, con
|
||||
return MessagePtr{new Message(region, data, size, hint)};
|
||||
}
|
||||
|
||||
auto TransportFactory::CreateSocket(const string& type, const string& name) const -> SocketPtr
|
||||
auto TransportFactory::CreateSocket(const string& type, const string& name) -> SocketPtr
|
||||
{
|
||||
return SocketPtr{new Socket(fContext, type, name, GetId())};
|
||||
return SocketPtr{new Socket(fContext, type, name, GetId(), this)};
|
||||
}
|
||||
|
||||
auto TransportFactory::CreatePoller(const vector<FairMQChannel>& channels) const -> PollerPtr
|
||||
|
@@ -38,7 +38,7 @@ class TransportFactory final : public FairMQTransportFactory
|
||||
auto CreateMessage(void* data, const std::size_t size, fairmq_free_fn* ffn, void* hint = nullptr) const -> MessagePtr override;
|
||||
auto CreateMessage(UnmanagedRegionPtr& region, void* data, const std::size_t size, void* hint = nullptr) const -> MessagePtr override;
|
||||
|
||||
auto CreateSocket(const std::string& type, const std::string& name) const -> SocketPtr override;
|
||||
auto CreateSocket(const std::string& type, const std::string& name) -> SocketPtr override;
|
||||
|
||||
auto CreatePoller(const std::vector<FairMQChannel>& channels) const -> PollerPtr override;
|
||||
auto CreatePoller(const std::vector<const FairMQChannel*>& channels) const -> PollerPtr override;
|
||||
|
Reference in New Issue
Block a user