FairMQ  1.3.8
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 final : 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 
57  ~Message() override;
58 
59  private:
60  size_t fInitialSize;
61  size_t fSize;
62  void* fData;
63  fairmq_free_fn* fFreeFunction;
64  void* fHint;
65 }; /* class Message */
66 
67 } /* namespace ofi */
68 } /* namespace mq */
69 } /* namespace fair */
70 
71 #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