00001 #ifndef _ots_ARTDAQProducer_h_
00002 #define _ots_ARTDAQProducer_h_
00003
00004 #include "otsdaq-core/DataManager/DataProducer.h"
00005 #include "otsdaq-core/ConfigurationInterface/Configurable.h"
00006 #include "artdaq/Application/BoardReaderCore.hh"
00007
00008
00009 #include <future>
00010 #include <memory>
00011 #include <string>
00012
00013 namespace ots
00014 {
00015
00016 class ARTDAQProducer : public DataProducer, public Configurable
00017 {
00018
00019 public:
00020 ARTDAQProducer (std::string supervisorApplicationUID, std::string bufferUID, std::string processorUID, const ConfigurationTree& theXDAQContextConfigTree, const std::string& configurationPath);
00021 virtual ~ARTDAQProducer(void);
00022
00023 void initLocalGroup (int rank);
00024
00025
00026
00027 void configure (int rank);
00028 void halt (void);
00029 void pauseProcessingData (void);
00030 void resumeProcessingData(void);
00031 void startProcessingData (std::string runNumber) override;
00032 void stopProcessingData (void);
00033
00034
00035
00036
00037
00038 private:
00039 bool workLoopThread(toolbox::task::WorkLoop* workLoop){return false;}
00040
00041 std::unique_ptr<artdaq::BoardReaderCore> fragment_receiver_ptr_;
00042 std::future<size_t> fragment_processing_future_;
00043 std::string name_;
00044
00045
00046 std::string report_string_;
00047 bool external_request_status_;
00048 fhicl::ParameterSet fhiclConfiguration_;
00049 };
00050
00051 }
00052
00053 #endif