FairMQ  1.2.1
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 
28 {
29  friend class FairMQSocketNN;
30 
31  public:
33  FairMQMessageNN(const size_t size);
34  FairMQMessageNN(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr);
35  FairMQMessageNN(FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint = 0);
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  FairMQ::Transport GetType() const override;
50 
51  void Copy(const FairMQMessage& msg) override;
52  void Copy(const FairMQMessagePtr& msg) override;
53 
54  ~FairMQMessageNN() override;
55 
56  private:
57  void* fMessage;
58  size_t fSize;
59  size_t fHint;
60  bool fReceiving;
61  FairMQUnmanagedRegion* fRegionPtr;
62  static FairMQ::Transport fTransportType;
63 
64  void* GetMessage() const;
65  void CloseMessage();
66  void SetMessage(void* data, const size_t size);
67 };
68 
69 #endif /* FAIRMQMESSAGENN_H_ */
Definition: FairMQUnmanagedRegion.h:18
Definition: FairMQSocketNN.h:18
Definition: FairMQMessageNN.h:27
Definition: FairMQMessage.h:19