FairMQ  1.3.8
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) -> 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 
47  auto CreateUnmanagedRegion(const size_t size, FairMQRegionCallback callback = nullptr) const -> UnmanagedRegionPtr override;
48 
49  auto GetType() const -> Transport override;
50 
51  void Interrupt() override {}
52  void Resume() override {}
53  void Reset() 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) -> SocketPtr override
Create a socket.
Definition: TransportFactory.cxx:59
Definition: FairMQTransportFactory.h:28
auto GetType() const -> Transport override
Get transport type.
Definition: TransportFactory.cxx:84
Definition: FairMQProgOptions.h:37
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)
Tools for interfacing containers to the transport via polymorphic allocators.
Definition: DeviceRunner.h:23

privacy