2 #include <boost/program_options.hpp>
4 namespace bpo = boost::program_options;
6 #include "artdaq-core/Core/SharedMemoryEventReceiver.hh"
7 #include "artdaq/DAQdata/Globals.hh"
8 #include "fhiclcpp/make_ParameterSet.h"
10 int main(
int argc,
char* argv[])
try
12 artdaq::configureMessageFacility(
"PrintSharedMemory");
14 std::ostringstream descstr;
16 <<
" <-c <config-file>> <other-options> [<source-file>]+";
17 bpo::options_description desc(descstr.str());
18 desc.add_options()(
"config,c", bpo::value<std::string>(),
"Configuration file.")(
"events,e",
"Print event information")(
"key,M", bpo::value<std::string>(),
"Shared Memory to attach to")(
"help,h",
"produce help message");
19 bpo::variables_map vm;
22 bpo::store(bpo::command_line_parser(argc, argv).options(desc).run(), vm);
25 catch (bpo::error
const& e)
27 std::cerr <<
"Exception from command line processing in " << *argv
28 <<
": " << e.what() <<
"\n";
31 if (vm.count(
"help") != 0u)
33 std::cout << desc << std::endl;
36 if ((vm.count(
"config") == 0u) && (vm.count(
"key") == 0u))
38 std::cerr <<
"Exception from command line processing in " << *argv
39 <<
": no configuration file given.\n"
40 <<
"For usage and an options list, please do '"
46 fhicl::ParameterSet pset;
47 if (vm.count(
"key") != 0u)
49 pset.put(
"shared_memory_key", vm[
"key"].as<std::string>());
50 pset.put(
"buffer_count", 1);
51 pset.put(
"max_event_size_bytes", 1024);
52 pset.put(
"ReadEventInfo", vm.count(
"events") > 0);
56 if (getenv(
"FHICL_FILE_PATH") ==
nullptr)
59 <<
"INFO: environment variable FHICL_FILE_PATH was not set. Using \".\"\n";
60 setenv(
"FHICL_FILE_PATH",
".", 0);
62 cet::filepath_lookup_after1 lookup_policy(
"FHICL_FILE_PATH");
63 fhicl::make_ParameterSet(vm[
"config"].as<std::string>(), lookup_policy, pset);
66 if (!pset.has_key(
"shared_memory_key"))
68 std::cerr <<
"You must specify a shared_memory_key in FHiCL or provide one on the command line!" << std::endl;
71 if (pset.get<
bool>(
"ReadEventInfo",
false))
73 artdaq::SharedMemoryEventReceiver t(pset.get<uint32_t>(
"shared_memory_key"), pset.get<uint32_t>(
"broadcast_shared_memory_key", pset.get<uint32_t>(
"shared_memory_key")));
74 std::cout << t.toString() << std::endl;
78 artdaq::SharedMemoryManager t(pset.get<uint32_t>(
"shared_memory_key"),
79 pset.get<
size_t>(
"buffer_count"),
80 pset.get<
size_t>(
"max_event_size_bytes"),
81 pset.get<
size_t>(
"stale_buffer_timeout_usec", 1000000));
82 std::cout << t.toString() << std::endl;