Belle II Software  release-08-01-10
RFEventServer.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 #ifndef RFEVENTSERVER_H
9 #define RFEVENTSERVER_H
10 
11 #include <string>
12 
13 #include "daq/rfarm/manager/RFConf.h"
14 #include "daq/rfarm/manager/RFSharedMem.h"
15 #include "daq/rfarm/manager/RFProcessManager.h"
16 #include "daq/rfarm/manager/RFLogManager.h"
17 #include "daq/rfarm/manager/RFFlowStat.h"
18 
19 #include "daq/rfarm/manager/RFServerBase.h"
20 
21 #define MAXNODES 256
22 
23 namespace Belle2 {
29  class RFEventServer : public RFServerBase {
30  public:
31  RFEventServer(std::string conffile);
32  ~RFEventServer();
33 
34  // Instance of singleton
35  static RFEventServer& Create(const std::string& conffile);
36  static RFEventServer& Instance();
37 
38  // Functions to be hooked to NSM
39  int Configure(NSMmsg*, NSMcontext*) override;
40  int UnConfigure(NSMmsg*, NSMcontext*) override;
41  int Start(NSMmsg*, NSMcontext*) override;
42  int Stop(NSMmsg*, NSMcontext*) override;
43  int Restart(NSMmsg*, NSMcontext*) override;
44 
45  // Server function
46  void server();
47 
48  // Cleanup
49  void cleanup();
50 
51  private:
52  RFConf* m_conf;
53  RFSharedMem* m_shm;
54  RFProcessManager* m_proc;
55  RFLogManager* m_log;
56  RFFlowStat* m_flow;
57  RingBuffer* m_rbufin;
58 
59  int m_pid_recv;
60  int m_pid_sender[MAXNODES];
61  int m_nnodes;
62 
63  private:
64  static RFEventServer* s_instance;
65  };
66 
68 }
69 #endif
70 
71 
72 
73 
Class to manage a Ring Buffer placed in an IPC shared memory.
Definition: RingBuffer.h:39
Abstract base class for different kinds of events.
Definition: nsm2.h:224