ctp3-mon  0.3.0
 All Classes Functions Variables Pages
ctp3-dim-test-server.cpp
1 #include "Ctp3DimData.h"
2 #include <chrono>
3 #include <dis.hxx>
4 #include <spdlog/spdlog.h>
5 #include <chrono>
6 using namespace std::chrono;
7 
8 int main(int argc, char **argv) {
9  auto console = spdlog::stdout_logger_mt("console");
10 
11  // timeout in msec
12  int timeout = 100;
13 
14  std::vector<std::string> service_list;
15  console->info("{}", argc);
16 
17  if (argc) {
18 
19  std::vector<std::string> param_list;
20  param_list.push_back("MONBUSY");
21  param_list.push_back("TESTPARAM");
22  std::vector<std::string> det_list;
23  det_list.push_back("tpc");
24  det_list.push_back("trd");
25  det_list.push_back("zdc");
26  det_list.push_back("emcal");
27  det_list.push_back("pmd");
28  det_list.push_back("acorde");
29  det_list.push_back("sdd");
30  det_list.push_back("muon_trk");
31  det_list.push_back("muon_trg");
32  det_list.push_back("daq");
33  det_list.push_back("ssd");
34  det_list.push_back("fmd");
35  det_list.push_back("t0");
36  det_list.push_back("hmpid");
37  det_list.push_back("phos");
38  det_list.push_back("cpv");
39  det_list.push_back("as");
40  det_list.push_back("spd");
41  det_list.push_back("tof");
42  det_list.push_back("v0");
43 
44  for (auto s : param_list)
45  for (auto d : det_list) {
46  console->info("Adding service {}/{}", d, s);
47  service_list.push_back(d + "/" + s);
48  }
49  } else {
50  for (int i = 1; i < argc; i++)
51  service_list.push_back(argv[i]);
52  }
53 
54  int n = service_list.size();
55 
56  console->info("Number of services {}", n);
57 
58  std::vector<DimService *> services;
59  DimService *sx;
60  // std::vector<float> values;
61  // Ctp3DimData *values[n];
62  Ctp3DimData *v;
63  int i = 0;
64  for (auto s : service_list) {
65  // values.push_back(float(i+1) / n);
66  // values[i] = float(i + 1) / n;
67  v = new Ctp3DimData();
68  v->btime = float(i + 1) / n;
69  char format[] = "I:2;F:3";
70  sx = new DimService(s.data(), format, (void *)v, 20);
71  services.push_back(sx);
72  i++;
73  }
74 
75  DimServer::start("Ctp3TestDimServer");
76  int nn = 0;
77  int index;
78 
79  timeout *= 1000;
80  std::srand(std::time(nullptr));
81  while (1) {
82  index = rand() % static_cast<int>(n);
83  sx = services[index];
84  v = (Ctp3DimData *)sx->itsData;
85  console->info("Sending index={} s={} val={}", index, sx->getName(),
86  v->btime);
87  v->btime = ((float)rand() / (RAND_MAX));
88  milliseconds ms =
89  duration_cast<milliseconds>(system_clock::now().time_since_epoch());
90  v->epchts = (int) (ms.count()/1000);
91  v->epchtu = (int) (ms.count() - (ms.count()/1000*1000))*1000;
92  // console->info("time {}.{} {}",v->epchts, v->epchtu, ms.count());
93  services[index]->updateService((void*)v, 20);
94  usleep(timeout);
95  nn++;
96  };
97 
98  for (auto d : services) {
99  delete d;
100  }
101 }
float btime
busy/time [0..1]
Definition: Ctp3DimData.h:15
w32 epchts
epochtime in secs
Definition: Ctp3DimData.h:13
Ctp3 dim data object class.
Definition: Ctp3DimData.h:12
w32 epchtu
0..999999 in micsecs
Definition: Ctp3DimData.h:14