1 #include "daq/slc/readout/FlowMonitor.h"
3 #include <daq/slc/system/Time.h>
12 if (m_info->isAvailable()) {
13 m_status.nodeid = m_info->getNodeId();
14 m_nbyte[0] = m_nbyte[1] = 0;
15 m_ioinfo[0].setLocalPort(m_info->getInputPort());
16 m_ioinfo[0].setLocalAddress(m_info->getInputAddress());
17 m_ip[0] = m_ioinfo[0].getLocalIP();
18 m_ioinfo[1].setLocalPort(m_info->getOutputPort());
19 m_ioinfo[1].setLocalAddress(m_info->getOutputAddress());
20 m_ip[1] = m_ioinfo[1].getLocalIP();
25 bool FlowMonitor::close()
32 if (m_info->isAvailable()) {
33 m_ioinfo[0].setLocalAddress(m_info->getInputAddress());
34 m_ioinfo[0].setLocalPort(m_info->getInputPort());
35 m_ioinfo[1].setLocalAddress(m_info->getOutputAddress());
36 m_ioinfo[1].setLocalPort(m_info->getOutputPort());
37 IOInfo::checkTCP(m_ioinfo);
38 unsigned int ctime =
Time().getSecond();
41 memcpy(&(m_status.header), &(info.header),
sizeof(
event_header));
42 double length = ctime - m_status.ctime;
43 m_status.eflag = info.eflag;
44 m_status.state = info.state;
45 m_status.expno = info.expno;
46 m_status.runno = info.runno;
47 m_status.subno = info.subno;
48 m_status.reserved_i[0] = info.reserved[0];
49 m_status.reserved_i[1] = info.reserved[1];
50 m_status.reserved_f[0] = info.reserved_f[0];
51 m_status.reserved_f[1] = info.reserved_f[1];
52 m_status.reserved_f[2] = info.reserved_f[2];
53 m_status.reserved_f[3] = info.reserved_f[3];
54 m_status.ctime = ctime;
58 m_status.evtrate_in = 0;
59 m_status.evtsize_in = 0;
60 m_status.flowrate_in = 0;
61 m_status.evtrate_out = 0;
62 m_status.evtsize_out = 0;
63 m_status.flowrate_out = 0;
64 if (m_ioinfo[0].getLocalPort() > 0) {
65 m_status.connection_in = m_ioinfo[0].getState() == 1;
66 m_status.nqueue_in = m_ioinfo[0].getRXQueue();
68 if (m_ioinfo[1].getLocalPort() > 0) {
69 m_status.connection_out = m_ioinfo[1].getState() == 1;
70 m_status.nqueue_out = m_ioinfo[1].getRXQueue();
72 if ((dcount = info.io[0].count - m_status.nevent_in) > 0) {
73 dnbyte = info.io[0].nbyte - m_nbyte[0];
74 m_status.evtrate_in = dcount / length / 1000.;
75 m_status.evtsize_in = dnbyte / dcount / 1000.;
76 m_status.flowrate_in = dnbyte / length / 1000000.;
77 m_status.nevent_in = info.io[0].count;
78 m_nbyte[0] = info.io[0].nbyte;
80 m_status.evtrate_in = 0;
81 m_status.evtsize_in = 0;
82 m_status.flowrate_in = 0;
84 if ((dcount = info.io[1].count - m_status.nevent_out) > 0) {
85 dnbyte = info.io[1].nbyte - m_nbyte[1];
86 m_status.evtrate_out = dcount / length / 1000.;
87 m_status.evtsize_out = dnbyte / dcount / 1000.;
88 m_status.flowrate_out = dnbyte / length / 1000000.;
89 m_status.nevent_out = info.io[1].count;
90 m_nbyte[1] = info.io[1].nbyte;
92 m_status.evtrate_out = 0;
93 m_status.evtsize_out = 0;
94 m_status.flowrate_out = 0;