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[])
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[0]
28 <<
": " << e.what() <<
"\n";
33 std::cout << desc << std::endl;
36 if (!vm.count(
"config") && !vm.count(
"key"))
38 std::cerr <<
"Exception from command line processing in " << argv[0]
39 <<
": no configuration file given.\n"
40 <<
"For usage and an options list, please do '"
41 << argv[0] <<
" --help"
46 fhicl::ParameterSet pset;
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")) std::cerr <<
"You must specify a shared_memory_key in FHiCL or provide one on the command line!" << std::endl;
68 if (pset.get<
bool>(
"ReadEventInfo",
false))
70 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")));
71 std::cout << t.toString() << std::endl;
75 artdaq::SharedMemoryManager t(pset.get<uint32_t>(
"shared_memory_key"),
76 pset.get<
size_t>(
"buffer_count"),
77 pset.get<
size_t>(
"max_event_size_bytes"),
78 pset.get<
size_t>(
"stale_buffer_timeout_usec", 1000000));
79 std::cout << t.toString() << std::endl;