FairMQ  1.3.7
C++ Message Passing Framework
FairMQMessageNN.h
1 /********************************************************************************
2  * Copyright (C) 2014 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  ********************************************************************************/
15 #ifndef FAIRMQMESSAGENN_H_
16 #define FAIRMQMESSAGENN_H_
17 
18 #include <cstddef>
19 #include <string>
20 #include <memory>
21 
22 #include "FairMQMessage.h"
23 #include "FairMQUnmanagedRegion.h"
24 
25 class FairMQSocketNN;
26 
27 class FairMQMessageNN final : public FairMQMessage
28 {
29  friend class FairMQSocketNN;
30 
31  public:
32  FairMQMessageNN(FairMQTransportFactory* factory = nullptr);
33  FairMQMessageNN(const size_t size, FairMQTransportFactory* factory = nullptr);
34  FairMQMessageNN(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr, FairMQTransportFactory* factory = nullptr);
35  FairMQMessageNN(FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint = 0, FairMQTransportFactory* factory = nullptr);
36 
37  FairMQMessageNN(const FairMQMessageNN&) = delete;
38  FairMQMessageNN operator=(const FairMQMessageNN&) = delete;
39 
40  void Rebuild() override;
41  void Rebuild(const size_t size) override;
42  void Rebuild(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr) override;
43 
44  void* GetData() const override;
45  size_t GetSize() const override;
46 
47  bool SetUsedSize(const size_t size) override;
48 
49  fair::mq::Transport GetType() const override;
50 
51  void Copy(const FairMQMessage& msg) override;
52 
53  ~FairMQMessageNN() override;
54 
55  private:
56  void* fMessage;
57  size_t fSize;
58  size_t fHint;
59  bool fReceiving;
60  FairMQUnmanagedRegion* fRegionPtr;
61  static fair::mq::Transport fTransportType;
62 
63  void* GetMessage() const;
64  void CloseMessage();
65  void SetMessage(void* data, const size_t size);
66 };
67 
68 #endif /* FAIRMQMESSAGENN_H_ */
Definition: FairMQUnmanagedRegion.h:18
Definition: FairMQTransportFactory.h:28
Definition: FairMQSocketNN.h:19
Definition: FairMQMessageNN.h:27
Definition: FairMQMessage.h:20

privacy