3 #include <boost/program_options.hpp>
4 namespace bpo = boost::program_options;
6 #include "fhiclcpp/make_ParameterSet.h"
7 #include "artdaq/DAQdata/Globals.hh"
8 #include "artdaq-core/Core/SharedMemoryEventReceiver.hh"
10 int main(
int argc,
char* argv[])
13 artdaq::configureMessageFacility(
"PrintSharedMemory");
15 std::ostringstream descstr;
17 <<
" <-c <config-file>> <other-options> [<source-file>]+";
18 bpo::options_description desc(descstr.str());
20 (
"config,c", bpo::value<std::string>(),
"Configuration file.")
21 (
"events,e",
"Print event information")
22 (
"key,M", bpo::value<std::string>(),
"Shared Memory to attach to")
23 (
"help,h",
"produce help message");
24 bpo::variables_map vm;
26 bpo::store(bpo::command_line_parser(argc, argv).options(desc).run(), vm);
29 catch (bpo::error
const & e) {
30 std::cerr <<
"Exception from command line processing in " << argv[0]
31 <<
": " << e.what() <<
"\n";
34 if (vm.count(
"help")) {
35 std::cout << desc << std::endl;
38 if (!vm.count(
"config") && !vm.count(
"key")) {
39 std::cerr <<
"Exception from command line processing in " << argv[0]
40 <<
": no configuration file given.\n"
41 <<
"For usage and an options list, please do '"
42 << argv[0] <<
" --help"
47 fhicl::ParameterSet pset;
50 pset.put(
"shared_memory_key", vm[
"key"].as<std::string>());
51 pset.put(
"buffer_count", 1);
52 pset.put(
"max_event_size_bytes", 1024);
53 pset.put(
"ReadEventInfo", vm.count(
"events") > 0);
56 if (getenv(
"FHICL_FILE_PATH") ==
nullptr) {
58 <<
"INFO: environment variable FHICL_FILE_PATH was not set. Using \".\"\n";
59 setenv(
"FHICL_FILE_PATH",
".", 0);
61 cet::filepath_lookup_after1 lookup_policy(
"FHICL_FILE_PATH");
62 fhicl::make_ParameterSet(vm[
"config"].as<std::string>(), lookup_policy, pset);
65 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;
67 if(pset.get<
bool>(
"ReadEventInfo",
false))
69 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")));
70 std::cout << t.toString() << std::endl;
74 artdaq::SharedMemoryManager t(pset.get<uint32_t>(
"shared_memory_key"),
75 pset.get<
size_t>(
"buffer_count"),
76 pset.get<
size_t>(
"max_event_size_bytes"),
77 pset.get<
size_t>(
"stale_buffer_timeout_usec", 1000000));
78 std::cout << t.toString() << std::endl;