Skip to content
Snippets Groups Projects
Commit d11501d5 authored by Chao1009's avatar Chao1009
Browse files

add a catcher program to test

parent c7d1e01d
No related branches found
No related tags found
No related merge requests found
Pipeline #2003 passed with stages
in 5 minutes and 34 seconds
......@@ -20,7 +20,7 @@ Int_t OnlineMonitor::Monitor(PRadETChannel *ch, std::chrono::seconds interval)
while (!fMonitor) {
system_clock::time_point start(system_clock::now());
system_clock::time_point next(start + interval);
std::cout << total << "events monitor" << std::endl;
total += ReadOnce(ch);
std::this_thread::sleep_until(next);
}
......@@ -38,7 +38,6 @@ Int_t OnlineMonitor::Monitor(PRadETChannel *ch, std::chrono::seconds interval)
if (fOutput)
fOutput->End();
if (fFile) {
fRun->Write("Run Data");
fFile->Purge();
}
if (fDoBench)
......@@ -106,9 +105,6 @@ Int_t OnlineMonitor::ProcOneEvent()
break;
}
if (fUpdateRun)
fRun->Update(fEvData);
if (fDoBench)
fBench->Begin("Cuts");
gHaCuts->ClearAll();
......
......@@ -68,11 +68,11 @@ void PRadETChannel::Open(const char* ipAddr, int tcpPort, const char* etFile)
et_system_setdebug(et_id, ET_DEBUG_INFO);
}
void PRadETChannel::NewStation(const string &name)
void PRadETChannel::NewStation(const string &name, int mode)
{
auto it = stations.find(name);
if(it == stations.end()) {
curr_stat = new PRadETStation(this, name);
curr_stat = new PRadETStation(this, name, mode);
stations[string(name)] = curr_stat;
}
}
......
......@@ -50,7 +50,7 @@ public:
PRadETChannel(size_t size = 1048576);
virtual ~PRadETChannel();
void Open(const char *ipAddr, int tcpPort, const char *etFile);
void NewStation(const std::string &name);
void NewStation(const std::string &name, int mode=2);
void SwitchStation(const std::string &name);
void RemoveStation(const std::string &name);
void AttachStation();
......
#include "ConfigOption.h"
#include "PRadETChannel.h"
#include "et.h"
#include <csignal>
#include <thread>
#include <chrono>
#include <iostream>
#define PROGRESS_COUNT 10
using namespace std::chrono;
volatile std::sig_atomic_t gSignalStatus;
void signal_handler(int signal) {
gSignalStatus = signal;
}
int main(int argc, char* argv[]) try
{
// setup input arguments
ConfigOption conf_opt;
conf_opt.AddLongOpt(ConfigOption::help_message, "help");
conf_opt.AddOpt(ConfigOption::arg_require, 'h');
conf_opt.AddOpt(ConfigOption::arg_require, 'p');
conf_opt.AddOpt(ConfigOption::arg_require, 'f');
conf_opt.AddOpt(ConfigOption::arg_require, 'i');
conf_opt.SetDesc("usage: %0");
conf_opt.SetDesc('h', "host address of the ET system, default \"localhost\".");
conf_opt.SetDesc('p', "port to connect, default 11111.");
conf_opt.SetDesc('f', "memory mapped et file, default \"/tmp/et_feeder\".");
conf_opt.SetDesc('i', "interval in milliseconds to write data, default \"100\"");
if (!conf_opt.ParseArgs(argc, argv) || conf_opt.NbofArgs() != 0) {
std::cout << conf_opt.GetInstruction() << std::endl;
return -1;
}
std::string host = "localhost";
int port = 11111;
std::string etf = "/tmp/et_feeder";
int interval = 100;
for (auto &opt : conf_opt.GetOptions()) {
switch (opt.mark) {
case 'h':
host = opt.var.String();
break;
case 'c':
port = opt.var.Int();
break;
case 'f':
etf = opt.var.String();
break;
case 'i':
interval = opt.var.Int();
break;
default :
std::cout << conf_opt.GetInstruction() << std::endl;
return -1;
}
}
// attach to ET system
auto ch = new PRadETChannel(100*1024*1024);
ch->Open(host.c_str(), port, etf.c_str());
ch->NewStation("Data Catcher");
ch->AttachStation();
// install signal handler
std::signal(SIGINT, signal_handler);
int count = 0;
while (true) {
if (gSignalStatus == SIGINT) {
std::cout << "Received control-C, exiting..." << std::endl;
ch->ForceClose();
break;
}
system_clock::time_point start(system_clock::now());
system_clock::time_point next(start + std::chrono::milliseconds(interval));
std::cout << "Read " << ch->Read() << " events from ET." << "\r" << std::flush;
std::this_thread::sleep_until(next);
}
std::cout << "Read " << count << " events from ET." << std::endl;
return 0;
} catch (PRadException e) {
std::cerr << e.FailureType() << ": " << e.FailureDesc() << std::endl;
return -1;
} catch (...) {
std::cerr << "?unknown exception" << std::endl;
}
......@@ -70,7 +70,7 @@ int main(int argc, char* argv[]) try
// attach to ET system
auto ch = new PRadETChannel();
ch->Open(host.c_str(), port, etf.c_str());
ch->NewStation("Data Feeder");
ch->NewStation("Data Feeder", 1);
ch->AttachStation();
// evio file reader
......@@ -107,8 +107,8 @@ int main(int argc, char* argv[]) try
std::cerr << e.FailureType() << ": " << e.FailureDesc() << std::endl;
return -1;
} catch (evio::evioException e) {
std::cerr << e.toString() << endl;
std::cerr << e.toString() << std::endl;
} catch (...) {
std::cerr << "?unknown exception" << endl;
std::cerr << "?unknown exception" << std::endl;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment