FairMQ  1.4.14
C++ Message Queuing Library and Framework
Message.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_MESSAGE_H
10 #define FAIR_MQ_OFI_MESSAGE_H
11 
12 #include <FairMQMessage.h>
13 #include <FairMQUnmanagedRegion.h>
14 
15 #include <asiofi.hpp>
16 #include <atomic>
17 #include <cstddef> // size_t
18 #include <zmq.h>
19 
20 namespace fair
21 {
22 namespace mq
23 {
24 namespace ofi
25 {
26 
33 class Message final : public fair::mq::Message
34 {
35  public:
36  Message(boost::container::pmr::memory_resource* pmr);
37  Message(boost::container::pmr::memory_resource* pmr, const size_t size);
38  Message(boost::container::pmr::memory_resource* pmr,
39  void* data,
40  const size_t size,
41  fairmq_free_fn* ffn,
42  void* hint = nullptr);
43  Message(boost::container::pmr::memory_resource* pmr,
44  FairMQUnmanagedRegionPtr& region,
45  void* data,
46  const size_t size,
47  void* hint = 0);
48 
49  Message(const Message&) = delete;
50  Message operator=(const Message&) = delete;
51 
52  auto Rebuild() -> void override;
53  auto Rebuild(const size_t size) -> void override;
54  auto Rebuild(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr) -> void override;
55 
56  auto GetData() const -> void* override;
57  auto GetSize() const -> size_t override;
58 
59  auto SetUsedSize(const size_t size) -> bool override;
60 
61  auto GetType() const -> fair::mq::Transport override { return fair::mq::Transport::OFI; }
62 
63  auto Copy(const fair::mq::Message& msg) -> void override;
64 
65  ~Message() override;
66 
67  private:
68  size_t fInitialSize;
69  size_t fSize;
70  void* fData;
71  fairmq_free_fn* fFreeFunction;
72  void* fHint;
73  boost::container::pmr::memory_resource* fPmr;
74 }; /* class Message */
75 
76 } /* namespace ofi */
77 } /* namespace mq */
78 } /* namespace fair */
79 
80 #endif /* FAIR_MQ_OFI_MESSAGE_H */
Definition: Message.h:33
Tools for interfacing containers to the transport via polymorphic allocators.
Definition: DeviceRunner.h:23
Definition: FairMQMessage.h:20

privacy