00001 #ifndef artdaq_Application_MPI2_RoutingMasterApp_hh
00002 #define artdaq_Application_MPI2_RoutingMasterApp_hh
00003
00004 #include <future>
00005
00006 #include "artdaq/Application/Commandable.hh"
00007 #include "artdaq/Application/RoutingMasterCore.hh"
00008
00009 namespace artdaq
00010 {
00011 class RoutingMasterApp;
00012 }
00013
00017 class artdaq::RoutingMasterApp : public artdaq::Commandable
00018 {
00019 public:
00025 RoutingMasterApp(int rank, std::string name);
00026
00030 RoutingMasterApp(RoutingMasterApp const&) = delete;
00031
00035 virtual ~RoutingMasterApp() = default;
00036
00041 RoutingMasterApp& operator=(RoutingMasterApp const&) = delete;
00042
00043
00051 bool do_initialize(fhicl::ParameterSet const& pset, uint64_t timeout, uint64_t timestamp) override;
00052
00060 bool do_start(art::RunID id, uint64_t timeout, uint64_t timestamp) override;
00061
00068 bool do_stop(uint64_t timeout, uint64_t timestamp) override;
00069
00076 bool do_pause(uint64_t timeout, uint64_t timestamp) override;
00077
00084 bool do_resume(uint64_t timeout, uint64_t timestamp) override;
00085
00091 bool do_shutdown(uint64_t timeout) override;
00092
00100 bool do_soft_initialize(fhicl::ParameterSet const& pset, uint64_t timeout, uint64_t timestamp) override;
00101
00109 bool do_reinitialize(fhicl::ParameterSet const& pset, uint64_t timeout, uint64_t timestamp) override;
00110
00116 void BootedEnter() override;
00117
00118
00124 std::string report(std::string const&) const override;
00125
00126 private:
00127 int rank_;
00128 std::unique_ptr<artdaq::RoutingMasterCore> routing_master_ptr_;
00129 std::string name_;
00130 std::future<size_t> routing_master_future_;
00131 };
00132
00133 #endif