1 #ifndef artdaq_DAQrate_RequestSender_hh
2 #define artdaq_DAQrate_RequestSender_hh
4 #include "artdaq/DAQdata/Globals.hh"
5 #include "artdaq-core/Data/RawEvent.hh"
6 #include "artdaq-utilities/Plugins/MetricManager.hh"
7 #include "artdaq/DAQrate/detail/RequestMessage.hh"
8 #include "fhiclcpp/ParameterSet.h"
15 #include <arpa/inet.h>
16 #include <netinet/in.h>
17 #include <sys/types.h>
18 #include <sys/socket.h>
93 void AddRequest(Fragment::sequence_id_t seqID, Fragment::timestamp_t timestamp);
110 mutable std::mutex request_mutex_;
111 mutable std::mutex request_send_mutex_;
112 std::map<Fragment::sequence_id_t, Fragment::timestamp_t> active_requests_;
114 size_t request_delay_;
115 size_t request_shutdown_timeout_us_;
117 struct sockaddr_in request_addr_;
118 std::string multicast_out_addr_;
121 bool send_routing_tokens_;
124 std::string token_address_;
125 std::atomic<bool> request_sending_;
128 void setup_requests_(std::string trigger_addr);
130 void do_send_request_();
132 void setup_tokens_();
134 void send_routing_token_(
int nSlots);
void RemoveRequest(Fragment::sequence_id_t seqID)
Remove a request from the request list.
detail::RequestMessageMode GetRequestMode() const
Get the mode for RequestMessages.
The RequestSender contains methods used to send data requests and Routing tokens. ...
virtual ~RequestSender()
RequestSender Destructor.
void SendRequest(bool endOfRunOnly=false)
Send a request message containing all current requests.
void SendRoutingToken(int nSlots)
Send a RoutingToken message indicating that slots are available.
RequestSender()=delete
Default Constructor is deleted.
void SetRequestMode(detail::RequestMessageMode mode)
Set the mode for RequestMessages. Used to indicate when RequestSender should enter "EndOfRun" mode...
RequestMessageMode
Mode used to indicate current run conditions to the request receiver.
RequestSender & operator=(RequestSender const &)=delete
Copy Assignment operator is deleted.
void AddRequest(Fragment::sequence_id_t seqID, Fragment::timestamp_t timestamp)
Add a request to the request list.