1 #ifndef ARTDAQ_TRANSFERPLUGINS_DETAIL_HOSTMAP_HH
2 #define ARTDAQ_TRANSFERPLUGINS_DETAIL_HOSTMAP_HH
7 #include "fhiclcpp/ParameterSet.h"
8 #include "artdaq/TransferPlugins/TransferInterface.hh"
9 #include "fhiclcpp/types/Sequence.h"
10 #include "fhiclcpp/types/Table.h"
11 #include "fhiclcpp/types/Atom.h"
23 fhicl::Atom<int>
rank{ fhicl::Name{
"rank"}, fhicl::Comment{
"Rank index"} };
25 fhicl::Atom<std::string>
host{ fhicl::Name{
"host"}, fhicl::Comment{
"Hostname for artdaq application with this rank"} };
27 fhicl::Atom<int>
portOffset{ fhicl::Name{
"portOffset"},fhicl::Comment{
"DEPRECATED: Port offset of this artdaq application"}, 5500 };
37 fhicl::Sequence<fhicl::Table<HostConfig>>
host_map{ fhicl::Name(
"host_map"), fhicl::Comment(
"List of artdaq applications by rank and location") };
56 inline std::vector<fhicl::ParameterSet>
MakeHostMapPset(std::map<int, DestinationInfo> input)
58 std::vector<fhicl::ParameterSet> output;
59 for (
auto& rank : input)
61 fhicl::ParameterSet rank_output;
62 rank_output.put<
int>(
"rank", rank.first);
63 rank_output.put<std::string>(
"host", rank.second.hostname);
64 rank_output.put<
int>(
"portOffset", rank.second.portOffset);
65 output.push_back(rank_output);
79 if (pset.has_key(
"host_map")) {
80 auto hosts = pset.get<std::vector<fhicl::ParameterSet>>(
"host_map");
81 for (
auto& ps : hosts)
85 info.
hostname = ps.get<std::string>(
"host",
"localhost");
86 info.portOffset = ps.get<
int>(
"portOffset", 5500) + masterPortOffset;
88 if (map.count(rank) && (map[rank].hostname != info.hostname || map[rank].portOffset != info.portOffset))
90 TLOG(TLVL_ERROR) <<
"Inconsistent host maps supplied! Check configuration! There may be TCPSocket-related failures!";
fhicl::Sequence< fhicl::Table< HostConfig > > host_map
List of artdaq applications by rank and location. See artdaq::HostMap::HostConfig ...
int portOffset
DEPRECATED: Port offset of this artdaq application.
fhicl::Atom< int > rank
"rank": Rank index
std::string hostname
Hostname of the application.
std::vector< fhicl::ParameterSet > MakeHostMapPset(std::map< int, DestinationInfo > input)
Create a list of HostMap::HostConfig ParameterSets from a hostMap_t map
Template for the host_map configuration parameter.
std::map< int, DestinationInfo > hostMap_t
The host_map is a map associating ranks with artdaq::DestinationInfo objects.
hostMap_t MakeHostMap(fhicl::ParameterSet pset, int masterPortOffset=0, hostMap_t map=hostMap_t())
Make a hostMap_t from a HostMap::Config ParameterSet
fhicl::Atom< std::string > host
"host": Hostname for artdaq application with this rank
Entries in the host_map should have these parameters. May be used for parameter validation ...
Value to be returned upon receive timeout.
fhicl::Atom< int > portOffset
"portOffset" (Default: 5500): DEPRECATED : Port offset of this artdaq application ...