Belle II Software  release-05-02-19
Serializer.h
1 //+
2 // File : Serializer.h
3 // Description : Module to get data from DataStore and send it to another network node
4 //
5 // Author : Satoru Yamada Itoh, IPNS, KEK
6 // Date : 2 - Aug - 2013
7 //-
8 
9 #ifndef SERIALIZER_H
10 #define SERIALIZER_H
11 
12 #include <string>
13 
14 #include <framework/core/Module.h>
15 
16 #include <daq/dataflow/EvtSocket.h>
17 
18 #include <daq/rawdata/CprErrorMessage.h>
19 #include <daq/dataobjects/SendHeader.h>
20 #include <daq/dataobjects/SendTrailer.h>
21 #include <rawdata/dataobjects/RawDataBlock.h>
22 
23 #include <rawdata/dataobjects/RawHeader_latest.h>
24 
25 #include <sys/mman.h>
26 
27 namespace Belle2 {
35  class SerializerModule : public Module {
36 
37  // Public functions
38  public:
39 
42  virtual ~SerializerModule();
43 
45  virtual void initialize();
46 
48  virtual void beginRun();
49  virtual void event();
50  virtual void endRun();
51  virtual void terminate();
52 
53  virtual int sendByWriteV(RawDataBlock* rawdblk);
54  // virtual void Connect(const char* hostname, const int port);
55  virtual void Accept();
56 
57  virtual void fillSendHeaderTrailer(SendHeader* hdr, SendTrailer* trl, RawDataBlock* rawdblk);
58  // Data members
59 
61  unsigned int calcXORChecksum(int* buf, int nwords);
62 
64  int m_shmflag;
65 
67  void shmOpen(char* path_cfg, char* path_sta);
68 
70  int* shmGet(int fd, int size_words);
71 
73  int Send(int socket, char* buf, int size_bytes);
74 
76  void printData(int* buf, int nwords);
77 
79  int CheckConnection(int socket);
80 
83 
86 
88  int* m_cfg_buf;
89 
91  int* m_cfg_sta;
92 
93 
94  protected :
95 
96  enum {
97  COPPER = 1,
98  ROPC = 2
99  };
100 
103 
106 
109 
110  int* m_buffer;
111 
112  // Parameters for EvtSocket
113 
115  std::string m_hostname_local;
116 
119 
121  int m_socket;
122 
125 
126  double m_start_time;
127 
128  double m_prev_time;
129 
130  unsigned int m_prev_nevt;
131 
132  double m_prev_totbytes;
133 
134  double time_array0[1000];
135  double time_array1[1000];
136  double time_array2[1000];
137 
139  std::string p_method;
140  int p_method_val;
141 
143  double getTimeSec();
144 
146  void recordTime(int event, double* array);
147 
150 
152  unsigned long long m_totbytes;
153 
156 
157 #ifdef NONSTOP
158  int* m_ptr;
160 
162  virtual void openRunPauseNshm();
163 
165  virtual int checkRunPause();
166 
168  virtual void resumeRun();
169 
171  void callCheckRunPause(std::string& err_str);
172 
173 #endif
174 
177 
178  };
179 
181 } // end namespace Belle2
182 
183 #endif // MODULEHELLO_H
Belle2::EvtSocketSend
Definition: EvtSocket.h:26
Belle2::SerializerModule::n_basf2evt
int n_basf2evt
No. of sent events.
Definition: Serializer.h:108
Belle2::SerializerModule::m_totbytes
unsigned long long m_totbytes
sent data size
Definition: Serializer.h:152
Belle2::SerializerModule::recordTime
void recordTime(int event, double *array)
store time info.
Definition: Serializer.cc:468
Belle2::SendHeader
Definition: SendHeader.h:21
Belle2::SerializerModule::printData
void printData(int *buf, int nwords)
print data contents
Definition: Serializer.cc:487
Belle2::SerializerModule::m_shmflag
int m_shmflag
Use shared memory.
Definition: Serializer.h:64
Belle2::CprErrorMessage
Definition: CprErrorMessage.h:22
Belle2::SerializerModule::m_cfg_sta
int * m_cfg_sta
buffer for shared memory
Definition: Serializer.h:91
Belle2::SerializerModule::Send
int Send(int socket, char *buf, int size_bytes)
send buffer
Definition: Serializer.cc:322
Belle2::RawHeader_latest
The Raw Header class ver.1 ( the latest version since May, 2014 ) This class defines the format of th...
Definition: RawHeader_latest.h:32
Belle2::SerializerModule::shmOpen
void shmOpen(char *path_cfg, char *path_sta)
open shared memory
Definition: Serializer.cc:136
Belle2::SerializerModule::m_cfg_buf
int * m_cfg_buf
buffer for shared memory
Definition: Serializer.h:88
Belle2::SerializerModule::m_compressionLevel
int m_compressionLevel
Compression parameter.
Definition: Serializer.h:105
Belle2::SerializerModule::m_sock
EvtSocketSend * m_sock
EvtSocket.
Definition: Serializer.h:124
Belle2::SerializerModule::endRun
virtual void endRun()
This method is called if the current run ends.
Definition: Serializer.cc:110
Belle2::SerializerModule::beginRun
virtual void beginRun()
Module functions to be called from event process.
Definition: Serializer.cc:102
Belle2::Module
Base class for Modules.
Definition: Module.h:74
Belle2::SerializerModule::m_port_to
int m_port_to
Destination port.
Definition: Serializer.h:118
Belle2::SerializerModule::SerializerModule
SerializerModule()
Constructor / Destructor.
Definition: Serializer.cc:35
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::SerializerModule::shmGet
int * shmGet(int fd, int size_words)
Get shared memory.
Definition: Serializer.cc:130
Belle2::SerializerModule::initialize
virtual void initialize()
Module functions to be called from main process.
Definition: Serializer.cc:61
Belle2::SendTrailer
Definition: SendTrailer.h:20
Belle2::SerializerModule::p_method
std::string p_method
How to handle data.
Definition: Serializer.h:139
Belle2::SerializerModule::tmp_header
RawHeader_latest tmp_header
which format is used
Definition: Serializer.h:176
Belle2::SerializerModule::terminate
virtual void terminate()
This method is called at the end of the event processing.
Definition: Serializer.cc:117
Belle2::SerializerModule
A class definition of an input module for Sequential ROOT I/O.
Definition: Serializer.h:35
Belle2::SerializerModule::m_start_flag
int m_start_flag
start flag
Definition: Serializer.h:155
Belle2::SerializerModule::m_shmfd_cfg
int m_shmfd_cfg
file descripter for shm
Definition: Serializer.h:82
Belle2::SerializerModule::CheckConnection
int CheckConnection(int socket)
Check socket status.
Belle2::SerializerModule::print_err
CprErrorMessage print_err
error message program
Definition: Serializer.h:149
Belle2::RawDataBlock
The RawDataBlock class Base class for rawdata handling.
Definition: RawDataBlock.h:27
Belle2::SerializerModule::m_hostname_local
std::string m_hostname_local
Destination Host.
Definition: Serializer.h:115
Belle2::SerializerModule::event
virtual void event()
This method is the core of the module.
Definition: Serializer.cc:595
Belle2::SerializerModule::BUF_SIZE_WORD
int BUF_SIZE_WORD
size of buffer for one event (word)
Definition: Serializer.h:102
Belle2::SerializerModule::getTimeSec
double getTimeSec()
store time info.
Definition: Serializer.cc:460
Belle2::SerializerModule::m_socket
int m_socket
Socket ID.
Definition: Serializer.h:121
Belle2::SerializerModule::m_shmfd_sta
int m_shmfd_sta
file descripter for shm
Definition: Serializer.h:85
Belle2::SerializerModule::calcXORChecksum
unsigned int calcXORChecksum(int *buf, int nwords)
calculate checksum
Definition: Serializer.cc:477