9 #include <framework/logging/Logger.h>
11 #include <daq/storage/SharedEventBuffer.h>
13 #include <daq/slc/base/IOException.h>
14 #include <daq/slc/readout/RunInfoBuffer.h>
16 #include <daq/slc/system/TCPServerSocket.h>
17 #include <daq/slc/system/TCPSocketWriter.h>
18 #include <daq/slc/system/LogFile.h>
20 #include <arpa/inet.h>
24 int main(
int argc,
char** argv)
27 LogFile::debug(
"usage: %s bufname bufsize "
28 "port [nodename, nodeid]", argv[0]);
32 bool use_info = (argc > 5);
34 info.open(argv[4], atoi(argv[5]));
37 ibuf.open(argv[1], atoi(argv[2]) * 1000000);
38 int* evtbuf =
new int[10000000];
39 unsigned int count_in = 0;
40 unsigned int count_out = 0;
41 unsigned int expno = 0;
42 unsigned int runno = 0;
43 unsigned int subno = 0;
45 const int port = atoi(argv[3]);
50 B2ERROR(
"Failed to open server socket 0.0.0.0:" << port);
54 if (use_info) info.setOutputPort(0);
57 LogFile::info(
"Connected from expreco.");
58 if (use_info) info.setOutputPort(port);
61 long long nbyte = (ibuf.read(evtbuf,
false,
false, &hdr)) *
sizeof(
int);
62 if (expno < hdr.expno || runno < hdr.runno) {
66 info.setExpNumber(expno);
67 info.setRunNumber(runno);
68 info.setSubNumber(subno);
69 info.setInputCount(0);
70 info.setInputNBytes(0);
71 info.setOutputCount(0);
72 info.setOutputNBytes(0);
73 count_in = count_out = 0;
78 info.addInputCount(1);
79 info.addInputNBytes(nbyte);
81 unsigned long long nbyte_out = 0;
83 unsigned int nbyte = htonl(evtbuf[0]);
84 nbyte_out = writer.write(&nbyte,
sizeof(
int));
85 nbyte_out += writer.write(evtbuf, evtbuf[0]);
88 LogFile::warning(
"Lost connection to expreco %s", e.what());
92 LogFile::warning(
"Connection to expreco broken.");
93 if (use_info) info.setInputPort(0);
94 info.reportError(RunInfoBuffer::SOCKET_OUT);
99 info.addOutputCount(1);
100 info.addOutputNBytes(nbyte_out);
105 }
catch (
const std::exception& e) {
106 B2ERROR(
"Unknown error: " << e.what());
Abstract base class for different kinds of events.
int main(int argc, char **argv)
Run all tests.