Belle II Software  release-05-02-19
RFEventServer.h
1 #ifndef RFEVENTSERVER_H
2 #define RFEVENTSERVER_H
3 //+
4 // File : RFEventServer.h
5 // Description : Receive events from EVB1 and distribute them
6 // to processing nodes
7 //
8 // Author : Ryosuke Itoh, IPNS, KEK
9 // Date : 24 - June - 2013
10 //-
11 
12 #include <string>
13 
14 #include "daq/rfarm/manager/RFConf.h"
15 #include "daq/rfarm/manager/RFSharedMem.h"
16 #include "daq/rfarm/manager/RFProcessManager.h"
17 #include "daq/rfarm/manager/RFLogManager.h"
18 #include "daq/rfarm/manager/RFFlowStat.h"
19 
20 #include "daq/rfarm/manager/RFServerBase.h"
21 
22 #define MAXNODES 256
23 
24 namespace Belle2 {
30  class RFEventServer : public RFServerBase {
31  public:
32  RFEventServer(std::string conffile);
33  ~RFEventServer();
34 
35  // Instance of singleton
36  static RFEventServer& Create(std::string conffile);
37  static RFEventServer& Instance();
38 
39  // Functions to be hooked to NSM
40  int Configure(NSMmsg*, NSMcontext*);
41  int UnConfigure(NSMmsg*, NSMcontext*);
42  int Start(NSMmsg*, NSMcontext*);
43  int Stop(NSMmsg*, NSMcontext*);
44  int Restart(NSMmsg*, NSMcontext*);
45 
46  // Server function
47  void server();
48 
49  // Cleanup
50  void cleanup();
51 
52  private:
53  RFConf* m_conf;
54  RFSharedMem* m_shm;
55  RFProcessManager* m_proc;
56  RFLogManager* m_log;
57  RFFlowStat* m_flow;
58  RingBuffer* m_rbufin;
59 
60  int m_pid_recv;
61  int m_pid_sender[MAXNODES];
62  int m_nnodes;
63 
64  private:
65  static RFEventServer* s_instance;
66  };
67 
69 }
70 #endif
71 
72 
73 
74 
Belle2::RFEventServer
Definition: RFEventServer.h:30
NSMmsg
Definition: nsm2.h:217
Belle2::RFFlowStat
Definition: RFFlowStat.h:28
Belle2::RFSharedMem
Definition: RFSharedMem.h:51
Belle2::RFLogManager
Definition: RFLogManager.h:18
Belle2::RingBuffer
Class to manage a Ring Buffer placed in an IPC shared memory.
Definition: RingBuffer.h:36
Belle2::RFProcessManager
Definition: RFProcessManager.h:22
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::RFServerBase
Definition: RFServerBase.h:20
Belle2::RFConf
Definition: RFConf.h:24
NSMcontext_struct
Definition: nsmlib2.h:66