00001 #ifndef artdaq_Application_MPI2_BoardReaderApp_hh
00002 #define artdaq_Application_MPI2_BoardReaderApp_hh
00003
00004 #include <future>
00005 #include <thread>
00006
00007 #include "artdaq/Application/Commandable.hh"
00008 #include "artdaq/Application/BoardReaderCore.hh"
00009
00010 namespace artdaq
00011 {
00012 class BoardReaderApp;
00013 }
00014
00018 class artdaq::BoardReaderApp : public artdaq::Commandable
00019 {
00020 public:
00026 BoardReaderApp(int rank, std::string name);
00027
00031 BoardReaderApp(BoardReaderApp const&) = delete;
00032
00036 virtual ~BoardReaderApp() = default;
00037
00042 BoardReaderApp& operator=(BoardReaderApp const&) = delete;
00043
00044
00052 bool do_initialize(fhicl::ParameterSet const& pset, uint64_t timeout, uint64_t timestamp) override;
00053
00061 bool do_start(art::RunID id, uint64_t timeout, uint64_t timestamp) override;
00062
00069 bool do_stop(uint64_t timeout, uint64_t timestamp) override;
00070
00077 bool do_pause(uint64_t timeout, uint64_t timestamp) override;
00078
00085 bool do_resume(uint64_t timeout, uint64_t timestamp) override;
00086
00092 bool do_shutdown(uint64_t timeout) override;
00093
00101 bool do_soft_initialize(fhicl::ParameterSet const& pset, uint64_t timeout, uint64_t timestamp) override;
00102
00110 bool do_reinitialize(fhicl::ParameterSet const& pset, uint64_t timeout, uint64_t timestamp) override;
00111
00117 void BootedEnter() override;
00118
00119
00125 std::string report(std::string const& which) const override;
00126
00127 private:
00128 std::unique_ptr<artdaq::BoardReaderCore> fragment_receiver_ptr_;
00129 std::future<size_t> fragment_processing_future_;
00130 int rank_;
00131 std::string name_;
00132 };
00133
00134 #endif