FairMQ  1.2.3
C++ Message Passing 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 <zmq.h>
16 
17 #include <cstddef> // size_t
18 #include <atomic>
19 
20 namespace fair
21 {
22 namespace mq
23 {
24 namespace ofi
25 {
26 
33 class Message : public fair::mq::Message
34 {
35  public:
36  Message();
37  Message(const size_t size);
38  Message(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr);
39  Message(FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint = 0);
40 
41  Message(const Message&) = delete;
42  Message operator=(const Message&) = delete;
43 
44  auto Rebuild() -> void override;
45  auto Rebuild(const size_t size) -> void override;
46  auto Rebuild(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr) -> void override;
47 
48  auto GetData() const -> void* override;
49  auto GetSize() const -> size_t override;
50 
51  auto SetUsedSize(const size_t size) -> bool override;
52 
53  auto GetType() const -> fair::mq::Transport override { return fair::mq::Transport::OFI; }
54 
55  auto Copy(const fair::mq::Message& msg) -> void override;
56  auto Copy(const fair::mq::MessagePtr& msg) -> void override;
57 
58  ~Message() override;
59 
60  private:
61  size_t fInitialSize;
62  size_t fSize;
63  void* fData;
64  fairmq_free_fn* fFreeFunction;
65  void* fHint;
66 }; /* class Message */
67 
68 } /* namespace ofi */
69 } /* namespace mq */
70 } /* namespace fair */
71 
72 #endif /* FAIR_MQ_OFI_MESSAGE_H */
Definition: Message.h:33
Definition: DeviceRunner.h:23
Definition: FairMQMessage.h:19