Belle II Software  release-05-01-25
NSMMessage.h
1 #ifndef _Belle2_NSMMessage_hh
2 #define _Belle2_NSMMessage_hh
3 
4 extern "C" {
5 #include <nsm2/nsm2.h>
6 }
7 
8 #include "daq/slc/nsm/NSMCommand.h"
9 #include "daq/slc/nsm/NSMNode.h"
10 #include "daq/slc/nsm/NSMVar.h"
11 
12 #include "daq/slc/database/DAQLogMessage.h"
13 
14 #include <daq/slc/system/Buffer.h>
15 
16 #include <daq/slc/base/Serializable.h>
17 
18 #include <string>
19 
20 namespace Belle2 {
26  class NSMCommunicator;
27  class NSMData;
28 
29  class NSMMessage : public Serializable {
30 
31  friend class NSMCommunicator;
32 
33  public:
34  static const unsigned int DATA_SIZE;
35 
36  public:
37  NSMMessage();
38  NSMMessage(const NSMNode& node);
39  NSMMessage(const NSMNode& node, const NSMCommand& cmd);
40  NSMMessage(const NSMNode& node, const NSMCommand& cmd,
41  int npar, int* pars);
42  NSMMessage(const NSMNode& node, const NSMCommand& cmd,
43  int par, const std::string& data);
44  NSMMessage(const NSMNode& node, const NSMCommand& cmd, int par);
45  NSMMessage(const NSMNode& node, const NSMCommand& cmd,
46  const std::string& data);
47  NSMMessage(const NSMNode& node, const NSMVar& var);
48  NSMMessage(const NSMNode& node, const DAQLogMessage& log);
49  NSMMessage(const NSMNode& node, const DAQLogMessage& log, const NSMCommand& cmd);
50  NSMMessage(const NSMNode& node, const NSMData& data);
51  NSMMessage(const NSMCommand& cmd);
52  NSMMessage(const NSMCommand& cmd, int par);
53  NSMMessage(const NSMCommand& cmd, int npar, int* pars);
54  NSMMessage(const NSMNode& node, const NSMCommand& cmd, int npar, int* pars,
55  const std::string& data);
56  NSMMessage(const NSMCommand& cmd, const std::string& data);
57  NSMMessage(const NSMVar& var);
58  NSMMessage(const DAQLogMessage& log);
59  NSMMessage(const NSMData& data);
60  NSMMessage(const NSMMessage& msg);
61  virtual ~NSMMessage() { }
62 
63  public:
64  const NSMMessage& operator=(const NSMMessage& msg);
65 
66  public:
67  void init();
68  void init(const NSMNode& node, const NSMVar& var);
69  void init(const NSMNode& node, const DAQLogMessage& log);
70  void init(const NSMNode& node, const DAQLogMessage& log, const NSMCommand& cmd);
71  void init(const NSMNode& node, const NSMData& data);
72  const char* getRequestName() const;
73  const char* getNodeName() const;
74  unsigned short getRequestId() const;
75  unsigned short getSequenceId() const;
76  unsigned short getNodeId() const;
77  unsigned short getNParams() const;
78  int getParam(int i) const;
79 #if NSM_PACKAGE_VERSION >= 1914
80  int* getParams();
81  const int* getParams() const;
82 #else
83  unsigned int* getParams();
84  const unsigned int* getParams() const;
85 #endif
86  unsigned int getLength() const;
87  const char* getData() const;
88  void setRequestName(const std::string& name);
89  void setRequestName(const NSMCommand& cmd);
90  void setRequestName();
91  void setNodeName(const std::string& name);
92  void setNodeName(const NSMNode& node);
93  void setRequestId(unsigned short id);
94  void setSequenceId(unsigned short id);
95  void setNodeId(unsigned short id);
96  void setNParams(unsigned short id);
97  void setParam(int i, unsigned int v);
98  void setData(int len, const char* data) ;
99  void setData(const std::string& text) ;
100  const NSMVar getVar();
101 
102  public:
103  NSMMessage wait(int timeout);
104  void push(const NSMMessage& msg);
105 
106  public:
107  virtual void readObject(Reader&);
108  virtual void writeObject(Writer&) const;
109 
110  public:
111  size_t read(NSMcontext* nsmc);
112  NSMmsg* getMsg() { return &m_nsm_msg; }
113 
114  private:
115  int try_read(int sock, char* buf, int datalen);
116 
117  private:
118  mutable NSMcontext* m_nsmc;
119  NSMmsg m_nsm_msg;
120  Buffer m_data;
121  mutable std::string m_nodename;
122  mutable std::string m_reqname;
123  bool m_hasobj;
124  NSMVar m_var;
125 
126  };
127 
129 };
130 
131 #endif
Belle2::DAQLogMessage
Definition: DAQLogMessage.h:16
Belle2::Reader
Definition: Reader.h:15
Belle2::NSMNode
Definition: NSMNode.h:14
NSMmsg
Definition: nsm2.h:217
Belle2::Serializable
Definition: Serializable.h:13
Belle2::NSMData
Definition: NSMData.h:24
Belle2::NSMCommunicator
Definition: NSMCommunicator.h:25
Belle2::Writer
Definition: Writer.h:15
Belle2::NSMMessage
Definition: NSMMessage.h:29
Belle2::Buffer
Definition: Buffer.h:12
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::NSMCommand
Definition: NSMCommand.h:12
Belle2::NSMVar
Definition: NSMVar.h:16
NSMcontext_struct
Definition: nsmlib2.h:66