Belle II Software development
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
23namespace Belle2 {
29 class RFEventServer : public RFServerBase {
30 public:
31 RFEventServer(std::string conffile);
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