00001 #ifndef artdaq_Application_MPI2_BoardReaderApp_hh
00002 #define artdaq_Application_MPI2_BoardReaderApp_hh
00003
00004 #include <future>
00005
00006 #include "artdaq/Application/Commandable.hh"
00007 #include "artdaq/Application/BoardReaderCore.hh"
00008
00009 namespace artdaq
00010 {
00011 class BoardReaderApp;
00012 }
00013
00017 class artdaq::BoardReaderApp : public artdaq::Commandable
00018 {
00019 public:
00023 BoardReaderApp();
00024
00028 BoardReaderApp(BoardReaderApp const&) = delete;
00029
00033 virtual ~BoardReaderApp() = default;
00034
00039 BoardReaderApp& operator=(BoardReaderApp const&) = delete;
00040
00041
00049 bool do_initialize(fhicl::ParameterSet const& pset, uint64_t timeout, uint64_t timestamp) override;
00050
00058 bool do_start(art::RunID id, uint64_t timeout, uint64_t timestamp) override;
00059
00066 bool do_stop(uint64_t timeout, uint64_t timestamp) override;
00067
00074 bool do_pause(uint64_t timeout, uint64_t timestamp) override;
00075
00082 bool do_resume(uint64_t timeout, uint64_t timestamp) override;
00083
00089 bool do_shutdown(uint64_t timeout) override;
00090
00098 bool do_soft_initialize(fhicl::ParameterSet const& pset, uint64_t timeout, uint64_t timestamp) override;
00099
00107 bool do_reinitialize(fhicl::ParameterSet const& pset, uint64_t timeout, uint64_t timestamp) override;
00108
00114 void BootedEnter() override;
00115
00122 bool do_meta_command(std::string const& command, std::string const& arg) override;
00123
00124
00130 std::string report(std::string const& which) const override;
00131
00132 private:
00133 std::unique_ptr<artdaq::BoardReaderCore> fragment_receiver_ptr_;
00134 boost::thread fragment_processing_thread_;
00135 };
00136
00137 #endif