10 #include <daq/rfarm/event/hltsocket/HLTMainLoop.h>
12 #include <framework/logging/Logger.h>
18 using namespace std::chrono_literals;
21 bool HLTMainLoop::s_interrupted =
false;
23 void HLTMainLoop::signalHandler(
int signalValue)
25 B2RESULT(
"Termination request...");
26 HLTMainLoop::s_interrupted =
true;
29 HLTMainLoop::HLTMainLoop()
34 bool HLTMainLoop::isRunning()
const
36 return not s_interrupted;
39 void HLTMainLoop::initSignalHandler()
const
41 struct sigaction action;
42 action.sa_handler = signalHandler;
44 sigemptyset(&action.sa_mask);
45 sigaction(SIGINT, &action, NULL);
46 sigaction(SIGTERM, &action, NULL);
49 int HLTMainLoop::writeToRingBufferWaiting(
RingBuffer* ringBuffer,
int* buffer,
unsigned int size)
const
53 irb = ringBuffer->
insq(buffer, size);
57 std::this_thread::sleep_for(20us);
63 int HLTMainLoop::readFromRingBufferWaiting(
RingBuffer* ringBuffer,
int* buffer)
const
66 while ((bsize = ringBuffer->
remq(buffer)) == 0 and isRunning()) {
67 std::this_thread::sleep_for(20us);