FairMQ  1.2.1
C++ Message Passing Framework
TransportFactory.h
1 /********************************************************************************
2  * Copyright (C) 2018 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
3  * *
4  * This software is distributed under the terms of the *
5  * GNU Lesser General Public Licence (LGPL) version 3, *
6  * copied verbatim in the file "LICENSE" *
7  ********************************************************************************/
8 
9 #ifndef FAIR_MQ_OFI_TRANSPORTFACTORY_H
10 #define FAIR_MQ_OFI_TRANSPORTFACTORY_H
11 
12 #include <FairMQTransportFactory.h>
13 #include <options/FairMQProgOptions.h>
14 #include <fairmq/ofi/Context.h>
15 
16 namespace fair
17 {
18 namespace mq
19 {
20 namespace ofi
21 {
22 
30 {
31  public:
32  TransportFactory(const std::string& id = "", const FairMQProgOptions* config = nullptr);
33  TransportFactory(const TransportFactory&) = delete;
34  TransportFactory operator=(const TransportFactory&) = delete;
35 
36  auto CreateMessage() const -> MessagePtr override;
37  auto CreateMessage(const std::size_t size) const -> MessagePtr override;
38  auto CreateMessage(void* data, const std::size_t size, fairmq_free_fn* ffn, void* hint = nullptr) const -> MessagePtr override;
39  auto CreateMessage(UnmanagedRegionPtr& region, void* data, const std::size_t size, void* hint = nullptr) const -> MessagePtr override;
40 
41  auto CreateSocket(const std::string& type, const std::string& name) const -> SocketPtr override;
42 
43  auto CreatePoller(const std::vector<FairMQChannel>& channels) const -> PollerPtr override;
44  auto CreatePoller(const std::vector<const FairMQChannel*>& channels) const -> PollerPtr override;
45  auto CreatePoller(const std::unordered_map<std::string, std::vector<FairMQChannel>>& channelsMap, const std::vector<std::string>& channelList) const -> PollerPtr override;
46  auto CreatePoller(const FairMQSocket& cmdSocket, const FairMQSocket& dataSocket) const -> PollerPtr override;
47 
48  auto CreateUnmanagedRegion(const size_t size, FairMQRegionCallback callback = nullptr) const -> UnmanagedRegionPtr override;
49 
50  auto GetType() const -> Transport override;
51 
52  void Interrupt() override {}
53  void Resume() override {}
54 
55  private:
56  mutable Context fContext;
57 }; /* class TransportFactory */
58 
59 } /* namespace ofi */
60 } /* namespace mq */
61 } /* namespace fair */
62 
63 #endif /* FAIR_MQ_OFI_TRANSPORTFACTORY_H */
Transport-wide context.
Definition: Context.h:38
auto CreateSocket(const std::string &type, const std::string &name) const -> SocketPtr override
Create a socket.
Definition: TransportFactory.cxx:59
auto CreateMessage() const -> MessagePtr override
Create empty FairMQMessage.
Definition: TransportFactory.cxx:39
Definition: FairMQTransportFactory.h:27
auto GetType() const -> Transport override
Get transport type.
Definition: TransportFactory.cxx:89
Definition: FairMQProgOptions.h:41
FairMQ transport factory for the ofi transport (implemented with ZeroMQ + libfabric) ...
Definition: TransportFactory.h:29
auto CreatePoller(const std::vector< FairMQChannel > &channels) const -> PollerPtr override
Create a poller for a single channel (all subchannels)
Definition: FairMQSocket.h:18
Definition: DeviceRunner.h:23