FairMQ  1.4.33
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::mq::ofi
21 {
22 
29 class Message final : public fair::mq::Message
30 {
31  public:
32  Message(boost::container::pmr::memory_resource* pmr);
33  Message(boost::container::pmr::memory_resource* pmr, Alignment alignment);
34  Message(boost::container::pmr::memory_resource* pmr, const size_t size);
35  Message(boost::container::pmr::memory_resource* pmr, const size_t size, Alignment alignment);
36  Message(boost::container::pmr::memory_resource* pmr,
37  void* data,
38  const size_t size,
39  fairmq_free_fn* ffn,
40  void* hint = nullptr);
41  Message(boost::container::pmr::memory_resource* pmr,
42  FairMQUnmanagedRegionPtr& region,
43  void* data,
44  const size_t size,
45  void* hint = 0);
46 
47  Message(const Message&) = delete;
48  Message operator=(const Message&) = delete;
49 
50  auto Rebuild() -> void override;
51  auto Rebuild(Alignment alignment) -> void override;
52  auto Rebuild(const size_t size) -> void override;
53  auto Rebuild(const size_t size, Alignment alignment) -> 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 fair::mq::ofi
77 
78 #endif /* FAIR_MQ_OFI_MESSAGE_H */
fair::mq::Alignment
Definition: FairMQMessage.h:25
fair::mq::ofi::Message
Definition: Message.h:36
FairMQMessage
Definition: FairMQMessage.h:33

privacy