FairMQ  1.2.3
C++ Message Passing Framework
FairMQMessageZMQ.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 FAIRMQMESSAGEZMQ_H_
16 #define FAIRMQMESSAGEZMQ_H_
17 
18 #include <cstddef>
19 #include <string>
20 #include <memory>
21 
22 #include <zmq.h>
23 
24 #include "FairMQMessage.h"
25 #include "FairMQUnmanagedRegion.h"
26 
27 class FairMQSocketZMQ;
28 
30 {
31  friend class FairMQSocketZMQ;
32 
33  public:
35  FairMQMessageZMQ(const size_t size);
36  FairMQMessageZMQ(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr);
37  FairMQMessageZMQ(FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint = 0);
38 
39  void Rebuild() override;
40  void Rebuild(const size_t size) override;
41  void Rebuild(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr) override;
42 
43  void* GetData() const override;
44  size_t GetSize() const override;
45 
46  bool SetUsedSize(const size_t size) override;
47  void ApplyUsedSize();
48 
49  fair::mq::Transport GetType() const override;
50 
51  void Copy(const FairMQMessagePtr& msg) override;
52  void Copy(const FairMQMessage& msg) override;
53 
54  ~FairMQMessageZMQ() override;
55 
56  private:
57  bool fUsedSizeModified;
58  size_t fUsedSize;
59  std::unique_ptr<zmq_msg_t> fMsg;
60  std::unique_ptr<zmq_msg_t> fViewMsg; // view on a subset of fMsg (treating it as user buffer)
61  static fair::mq::Transport fTransportType;
62 
63  zmq_msg_t* GetMessage() const;
64  void CloseMessage();
65 };
66 
67 #endif /* FAIRMQMESSAGEZMQ_H_ */
Definition: FairMQSocketZMQ.h:19
Definition: FairMQMessageZMQ.h:29
Definition: FairMQMessage.h:19