Belle II Software  release-08-01-10
ERecoDistributor.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 EREVENTDIST_H
9 #define EREVENTDIST_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 ERecoDistributor : public RFServerBase {
30  public:
31  ERecoDistributor(std::string conffile);
33 
34  // Functions to be hooked to NSM
35  int Configure(NSMmsg*, NSMcontext*) override;
36  int UnConfigure(NSMmsg*, NSMcontext*) override;
37  int Start(NSMmsg*, NSMcontext*) override;
38  int Stop(NSMmsg*, NSMcontext*) override;
39  int Restart(NSMmsg*, NSMcontext*) override;
40 
41  // Server function
42  void server();
43 
44  private:
45  RFConf* m_conf;
46  RFSharedMem* m_shm;
47  RFProcessManager* m_proc;
48  RFLogManager* m_log;
49  RFFlowStat* m_flow;
50  RingBuffer* m_rbufin;
51 
52  int m_pid_recv[MAXNODES];
53  int m_pid_sender[MAXNODES];
54  int m_nnodes;
55  int m_nrecv;
56 
57  };
58 
60 }
61 #endif
62 
63 
64 
65 
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