FairMQ  1.3.9
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"
27 
28 class FairMQSocketZMQ;
29 
30 class FairMQMessageZMQ final : public FairMQMessage
31 {
32  friend class FairMQSocketZMQ;
33 
34  public:
36  FairMQMessageZMQ(const size_t size, FairMQTransportFactory* = nullptr);
37  FairMQMessageZMQ(void* data, const size_t size, fairmq_free_fn* ffn, void* hint = nullptr, FairMQTransportFactory* = nullptr);
38  FairMQMessageZMQ(FairMQUnmanagedRegionPtr& region, void* data, const size_t size, void* hint = 0, FairMQTransportFactory* = nullptr);
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  void ApplyUsedSize();
49 
50  fair::mq::Transport GetType() const override;
51 
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:20
Definition: FairMQTransportFactory.h:28
Definition: FairMQMessageZMQ.h:30
Definition: FairMQMessage.h:20

privacy