otsdaq  v2_01_00
TCPDataStreamerConsumer_processor.cc
1 #include "otsdaq-core/DataProcessorPlugins/TCPDataStreamerConsumer.h"
2 #include "otsdaq-core/MessageFacility/MessageFacility.h"
3 #include "otsdaq-core/Macros/CoutMacros.h"
4 #include "otsdaq-core/Macros/ProcessorPluginMacros.h"
5 
6 #include <iostream>
7 #include <cassert>
8 #include <unistd.h>
9 
10 using namespace ots;
11 
12 //========================================================================================================================
13 TCPDataStreamerConsumer::TCPDataStreamerConsumer(std::string supervisorApplicationUID, std::string bufferUID, std::string processorUID, const ConfigurationTree& theXDAQContextConfigTree, const std::string& configurationPath)
14 : WorkLoop (processorUID)
16  theXDAQContextConfigTree.getNode(configurationPath).getNode("StreamToPort").getValue<unsigned int>()
17  )
18 , DataConsumer (supervisorApplicationUID, bufferUID, processorUID, HighConsumerPriority)
19 , Configurable (theXDAQContextConfigTree, configurationPath)
20 //, Socket ("192.168.133.1", 47200)
21 //, DataConsumer ("ARTDAQDataManager", 1, "ARTDAQBuffer", "ARTDAQDataStreamer0", HighConsumerPriority)
22 //, streamToSocket_("192.168.133.1", 50100)
23 {
24  std::cout << __COUT_HDR_FL__ << __PRETTY_FUNCTION__ << std::endl;
25  std::cout << __COUT_HDR_FL__ << __PRETTY_FUNCTION__ << std::endl;
26  std::cout << __COUT_HDR_FL__ << __PRETTY_FUNCTION__ << std::endl;
27  std::cout << __COUT_HDR_FL__ << __PRETTY_FUNCTION__ << std::endl;
28  std::cout << __COUT_HDR_FL__ << __PRETTY_FUNCTION__ << std::endl;
29  std::cout << __COUT_HDR_FL__ << __PRETTY_FUNCTION__ << std::endl;
30  //Socket::initialize(); //dont call this! TCPDataStreamer() calls it
31  std::cout << __COUT_HDR_FL__ << __PRETTY_FUNCTION__ << "done!" << std::endl;
32 }
33 
34 //========================================================================================================================
35 TCPDataStreamerConsumer::~TCPDataStreamerConsumer(void)
36 {
37 }
38 
39 //========================================================================================================================
40 bool TCPDataStreamerConsumer::workLoopThread(toolbox::task::WorkLoop* workLoop)
41 {
42  fastRead();
43  return WorkLoop::continueWorkLoop_;
44 }
45 
46 //========================================================================================================================
47 void TCPDataStreamerConsumer::fastRead(void)
48 {
49  //std::cout << __COUT_HDR_FL__ << __PRETTY_FUNCTION__ << processorUID_ << " running!" << std::endl;
50  if(DataConsumer::read(dataP_, headerP_) < 0)
51  {
52  usleep(100);
53  return;
54  }
55  //unsigned int reconverted = (((*headerP_)["IPAddress"][0]&0xff)<<24) + (((*headerP_)["IPAddress"][1]&0xff)<<16) + (((*headerP_)["IPAddress"][2]&0xff)<<8) + ((*headerP_)["IPAddress"][3]&0xff);
56  //std::cout << __COUT_HDR_FL__ << __PRETTY_FUNCTION__ << processorUID_ << " -> Got some data. From: " << std::hex << reconverted << std::dec << std::endl;
57 
58  //std::cout << __COUT_HDR_FL__ << dataP_->length() << std::endl;
59  TCPDataStreamerBase::send( *dataP_);
60  DataConsumer::setReadSubBuffer<std::string, std::map<std::string, std::string>>();
61 }
62 
63 //========================================================================================================================
64 void TCPDataStreamerConsumer::slowRead(void)
65 {
66  //std::cout << __COUT_HDR_FL__ << __PRETTY_FUNCTION__ << processorUID_ << " running!" << std::endl;
67  //This is making a copy!!!
68  if(DataConsumer::read(data_, header_) < 0)
69  {
70  usleep(1000);
71  return;
72  }
73  //unsigned int reconverted = ((header_["IPAddress"][0]&0xff)<<24) + ((header_["IPAddress"][1]&0xff)<<16) + ((header_["IPAddress"][2]&0xff)<<8) + (header_["IPAddress"][3]&0xff);
74  //std::cout << __COUT_HDR_FL__ << __PRETTY_FUNCTION__ << processorUID_ << " -> Got some data. From: " << std::hex << reconverted << std::dec << std::endl;
75 
76  TCPDataStreamerBase::send( data_);
77 }
78 
79 DEFINE_OTS_PROCESSOR(TCPDataStreamerConsumer)