Jpp
AcousticDataFilter.h
Go to the documentation of this file.
1 #ifndef ACOUSTICDATAFILTER_H_
2 #define ACOUSTICDATAFILTER_H_
3 
4 #include <string>
5 #include <sstream>
6 #include <iostream>
7 #include <ctime>
8 #include <unistd.h>
9 #include <stdio.h>
10 
11 #include <vector>
12 #include <map>
13 
14 #include <boost/asio.hpp>
15 #include <boost/bind.hpp>
16 #include <boost/atomic.hpp>
17 #include <boost/shared_ptr.hpp>
18 #include <boost/make_shared.hpp>
19 #include <boost/thread/thread.hpp>
20 
21 #include <boost/algorithm/string/trim.hpp>
22 
26 #include <JDAQ/JDAQTags.hh>
27 
28 #include "toalib/km3_toa_lib.hpp"
30 #include "Tools/KM3NeT_DOM.h"
31 
32 #define SERVER_THREAD_POOL 2
33 #define TRIGGER_THREAD_POOL 8
34 #define MAX_TOA_SIZE 1048576
35 
36 
37 /**
38  * \author fsimeone
39  */
40 
43 
44 //#define DEBUG_ACOUSTICDATAFILTER
45 
47 {
48 public:
49  static const int DEBUG_LEVEL=1;
50 
51  AcousticDataFilter( const std::string& address,\
52  const std::string& port,\
53  const std::string& name,\
54  const std::string& server,\
55  const std::string& wisdom,\
56  const std::string& output,\
57  const std::string& raw,\
59  const int level);
60  virtual ~AcousticDataFilter();
61 
62  void Send_toa_async(ToA_Packet packet){strand_.post(boost::bind(&AcousticDataFilter::Send_toa,this,packet));};
63 
64  virtual void actionEnter() {};
65  virtual void actionExit() {exit_=true;};
66  virtual void actionInit(int length, const char* buffer);
67  virtual void actionConfigure(int length, const char* buffer);
68  virtual void actionStart(int length, const char* buffer);
69  virtual void actionPause(int length, const char* buffer);
70  virtual void actionContinue(int length, const char* buffer);
71  virtual void actionStop(int length, const char* buffer);
72  virtual void actionReset(int length, const char* buffer);
73  virtual void actionQuit(int length, const char* buffer);
74  virtual void actionInput(int length, const char* buffer) {};
75  virtual void actionRunning() {};
76 
77 
78 private:
79  const JNET::JTag & clientTag() const { return KM3NETDAQ::RC_AFILTER; };
80 
81  void Create_probes(std::vector<std::string> probes,std::size_t window);
82  void Create_DOMs(std::vector<std::string> doms,std::string& debug_file_path,std::size_t window,std::size_t overlap);
83  void Start_accept();
84  void Accept_completed(pLink link, const boost::system::error_code& error);
85  void Start();
86  void Stop();
87  void Open_toa_file();
88  void Send_toa(ToA_Packet packet);
89 
90  boost::atomic<bool> exit_;
91  boost::atomic<bool> running_;
92  std::string address_;
93  std::string port_;
94 
98 
99  boost::thread_group server_threads_;
100  boost::asio::io_service server_io_service_;
101  boost::asio::io_service::work* server_work_;
102  boost::asio::ip::tcp::acceptor server_acceptor_;
103  boost::thread_group trigger_threads_;
104  boost::asio::io_service trigger_io_service_;
105  boost::asio::io_service::work* trigger_work_;
106  boost::asio::io_service::strand strand_;
107 
108  std::string debug_file_path_;
109  std::string toa_file_path_;
110  std::ofstream toa_file_;
111  std::string wisdom_file_;
112 };
113 
114 #endif /* ACOUSTICDATAFILTER_H_ */
JLOGGER::JLogger
Interface for logging messages.
Definition: JLogger.hh:22
AcousticDataFilter::actionPause
virtual void actionPause(int length, const char *buffer)
Definition: AcousticDataFilter.cpp:338
AcousticDataFilter::clientTag
const JNET::JTag & clientTag() const
Definition: AcousticDataFilter.h:79
probe_entry
std::pair< std::size_t, pProbe > probe_entry
Definition: AcousticDataFilter.h:41
AcousticDataFilter::toa_file_path_
std::string toa_file_path_
Definition: AcousticDataFilter.h:109
AcousticDataFilter::Create_probes
void Create_probes(std::vector< std::string > probes, std::size_t window)
Definition: AcousticDataFilter.cpp:231
AcousticDataFilter::actionConfigure
virtual void actionConfigure(int length, const char *buffer)
Definition: AcousticDataFilter.cpp:185
AcousticDataFilter::trigger_io_service_
boost::asio::io_service trigger_io_service_
Definition: AcousticDataFilter.h:104
KM3NETDAQ::RC_AFILTER
static const JNET::JTag RC_AFILTER
Definition: JDAQTags.hh:56
AcousticDataFilter::toa_file_
std::ofstream toa_file_
Definition: AcousticDataFilter.h:110
AcousticDataFilter::actionExit
virtual void actionExit()
Definition: AcousticDataFilter.h:65
AcousticDataFilter::exit_
boost::atomic< bool > exit_
Definition: AcousticDataFilter.h:90
AcousticDataFilter::actionStop
virtual void actionStop(int length, const char *buffer)
Definition: AcousticDataFilter.cpp:350
AcousticDataFilter::actionContinue
virtual void actionContinue(int length, const char *buffer)
Definition: AcousticDataFilter.cpp:344
AcousticDataFilter::links_
std::vector< pLink > links_
Definition: AcousticDataFilter.h:97
AcousticDataFilter::server_work_
boost::asio::io_service::work * server_work_
Definition: AcousticDataFilter.h:101
AcousticDataFilter::port_
std::string port_
Definition: AcousticDataFilter.h:93
ToA_Packet
Definition: Audio_Structures.h:85
JControlHostLogger.hh
std::vector< std::string >
AcousticDataFilter::server_threads_
boost::thread_group server_threads_
Definition: AcousticDataFilter.h:99
AcousticDataFilter::Send_toa
void Send_toa(ToA_Packet packet)
Definition: AcousticDataFilter.cpp:310
KM3NETDAQ::JDAQClient::server
JSharedPointer< JControlHost > server
message server
Definition: JDAQClient.hh:800
AcousticDataFilter::Accept_completed
void Accept_completed(pLink link, const boost::system::error_code &error)
Definition: AcousticDataFilter.cpp:146
AcousticDataFilter::doms_
std::map< std::size_t, pDOM > doms_
Definition: AcousticDataFilter.h:96
AcousticDataFilter::actionStart
virtual void actionStart(int length, const char *buffer)
Definition: AcousticDataFilter.cpp:224
JTOOLS::overlap
bool overlap(const JRange< T, JComparator_t > &first, const JRange< T, JComparator_t > &second)
Test overlap between ranges.
Definition: JRange.hh:653
AcousticDataFilter::trigger_threads_
boost::thread_group trigger_threads_
Definition: AcousticDataFilter.h:103
AcousticDataFilter::server_io_service_
boost::asio::io_service server_io_service_
Definition: AcousticDataFilter.h:100
AcousticDataFilter::strand_
boost::asio::io_service::strand strand_
Definition: AcousticDataFilter.h:106
AcousticDataFilter::AcousticDataFilter
AcousticDataFilter(const std::string &address, const std::string &port, const std::string &name, const std::string &server, const std::string &wisdom, const std::string &output, const std::string &raw, JLOGGER::JLogger *logger, const int level)
Definition: AcousticDataFilter.cpp:63
AcousticDataFilter
Definition: AcousticDataFilter.h:46
AcousticDataFilter::actionRunning
virtual void actionRunning()
This method is repeatedly called when this client machine is in state Running and the clock interval ...
Definition: AcousticDataFilter.h:75
JNET::JTag
ControlHost tag.
Definition: JTag.hh:35
JDAQTags.hh
AcousticDataFilter::Stop
void Stop()
Definition: AcousticDataFilter.cpp:113
AcousticDataFilter::actionInit
virtual void actionInit(int length, const char *buffer)
Definition: AcousticDataFilter.cpp:157
AcousticDataFilter::~AcousticDataFilter
virtual ~AcousticDataFilter()
Definition: AcousticDataFilter.cpp:89
AcousticDataFilter::Send_toa_async
void Send_toa_async(ToA_Packet packet)
Definition: AcousticDataFilter.h:62
std::map< std::size_t, pProbe >
std::pair
Definition: JSTDTypes.hh:15
KM3NETDAQ::JDAQClient
Control unit client base class.
Definition: JDAQClient.hh:272
AcousticDataFilter::trigger_work_
boost::asio::io_service::work * trigger_work_
Definition: AcousticDataFilter.h:105
AcousticDataFilter::address_
std::string address_
Definition: AcousticDataFilter.h:92
AcousticDataFilter::actionEnter
virtual void actionEnter()
Interface methods for actions corresponding to state transitions.
Definition: AcousticDataFilter.h:64
KM3NETDAQ::JDAQClient::logger
JMessageLogger logger
message logger
Definition: JDAQClient.hh:801
AcousticDataFilter::debug_file_path_
std::string debug_file_path_
Definition: AcousticDataFilter.h:108
AcousticDataFilter::Create_DOMs
void Create_DOMs(std::vector< std::string > doms, std::string &debug_file_path, std::size_t window, std::size_t overlap)
Definition: AcousticDataFilter.cpp:267
AcousticDataFilter::running_
boost::atomic< bool > running_
Definition: AcousticDataFilter.h:91
AcousticDataFilter::actionQuit
virtual void actionQuit(int length, const char *buffer)
Definition: AcousticDataFilter.cpp:356
KM3NeT_DOM.h
AcousticDataFilter::server_acceptor_
boost::asio::ip::tcp::acceptor server_acceptor_
Definition: AcousticDataFilter.h:102
AcousticDataFilter::probes_
std::map< std::size_t, pProbe > probes_
Definition: AcousticDataFilter.h:95
AcousticDataFilter::actionReset
virtual void actionReset(int length, const char *buffer)
Definition: AcousticDataFilter.cpp:172
dom_entry
std::pair< std::size_t, pDOM > dom_entry
Definition: AcousticDataFilter.h:42
AcousticDataFilter::Start
void Start()
Definition: AcousticDataFilter.cpp:95
AcousticDataFilter::DEBUG_LEVEL
static const int DEBUG_LEVEL
Definition: AcousticDataFilter.h:49
AcousticDataFilter::actionInput
virtual void actionInput(int length, const char *buffer)
This method is called at ev_input.
Definition: AcousticDataFilter.h:74
AcousticDataFilter::Start_accept
void Start_accept()
Definition: AcousticDataFilter.cpp:138
AcousticDataFilter::wisdom_file_
std::string wisdom_file_
Definition: AcousticDataFilter.h:111
AcousticDataFilter::Open_toa_file
void Open_toa_file()
Definition: AcousticDataFilter.cpp:329
JDAQCHSM::name
std::string name
Definition: JDAQCHSM.hh:165
JMessageLogger.hh
JDAQClient.hh