27   const std::string  save   =   
"save";    
 
   28   const std::string  
stop   =   
"stop";    
 
   31   const int    MINIMUM_NUMBER_OF_MESSAGES  =  100;
 
   32   const double MINIMUM_ELAPSED_TIME_S      =  60*60;
 
   42     static const int MAXIMUM_FILE_NUMBER  = 100;
 
   49     JLoggerFile(
const std::string& 
path) :
 
   74       for (
int i = 0; !this->is_open() && i != MAXIMUM_FILE_NUMBER; ++i) {
 
   80            << 
"_"  << this->getYear() << 
'-' << 
FILL(2,
'0') << this->getMonth() << 
'-' << 
FILL(2,
'0') << this->getDay();
 
  111     std::string file_name;
 
  126 int main(
int argc, 
const char *argv[])
 
  142     JParser<> zap(
"Auxiliary program to save logger messages from ControlHost server.");
 
  144     zap[
'H'] = 
make_field(hostname)        = 
"localhost";
 
  153   catch(
const exception &error) {
 
  154     FATAL(error.what() << endl);
 
  157   if (happy_hour.empty()) {
 
  159     WARNING(
"No happy hours (option -W); set to midnight." << endl);
 
  161     happy_hour.insert(0);
 
  183     JLoggerFile out(
path);
 
  187     DEBUG(
"Open file  " << out.getFilename() << endl);
 
  194     for (
int number_of_messages; buffer.size() != 
stop.size() || string(buffer.data(), 
stop.size()) != 
stop; ) {
 
  196       const int check = in.
CheckHead(prefix, timeout);
 
  198       DEBUG(
"Check head " << check << endl);
 
  202         FATAL(
"Error at JControlHost::CheckHead " << check << endl);
 
  204       } 
else if (check == 1) {
 
  208         DEBUG(
"Message <" << buffer << 
">" << endl);
 
  210         if        (buffer == 
stop) {
 
  214         } 
else if (buffer == save) {
 
  216           DEBUG(
"Close file " << out.getFilename() << endl);
 
  221           DEBUG(
"Open file  " << out.getFilename() << endl);
 
  225           ++number_of_messages;
 
  227           if ( ! (out << buffer << endl)) {
 
  228             FATAL(
"Error writing to file " << out.getFilename() << endl);
 
  233       if (check == 0 || number_of_messages > MINIMUM_NUMBER_OF_MESSAGES) {
 
  235         number_of_messages = 0;
 
  243           DEBUG(
"Close file " << out.getFilename() << endl);
 
  248           DEBUG(
"Open file " << out.getFilename() << endl);
 
  256     ERROR(error << endl);
 
Utility class to parse command line options. 
 
void set() const 
Set to actual time. 
 
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
 
static const std::string MESSAGE_TAG
Message logging tag. 
 
int Subscribe(const JSubscription &subscription)
Subscribe to single tag. 
 
int SendMeAlways()
Tell server to send messages forever. 
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
 
std::string getFullPath(const std::string &path)
Get full path, i.e. add JEEP::PATHNAME_SEPARATOR if necessary. 
 
T * open(const std::string &file_name)
Open file. 
 
Auxiliary class for time values. 
 
int CheckHead(JPrefix &prefix, JTimeval timeout=JTimeval::min())
Check for header, without waiting. 
 
do cat driver txt<< EOFevent ev_configure{RC_EVT%< ev_configure.txt > RC_DWRT path
 
void open(const char *name, int open_mode=std::ios::out)
 
int GetFullString(std::string &buffer)
Receive string. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
void close(std::istream *pf)
Close file. 
 
JSubscriptionList & add(const JSubscription &subscription)
Add subscription. 
 
Exception for ControlHost. 
 
Auxiliary class for all subscription. 
 
General purpose messaging. 
 
Auxiliary data structure for sequence of same character. 
 
double getElapsedTime(const JDateAndTime &object) const 
Get elapsed time since given date and time. 
 
static JStat getFileStatus
Function object for file status. 
 
General purpose message reporting. 
 
Auxililary class to get date and time. 
 
Utility class to parse command line options. 
 
int getHour() const 
hours after midnight [0-23] 
 
std::string getFilename(const std::string &file_name)
Get file name part, i.e. part after last JEEP::PATHNAME_SEPARATOR if any. 
 
static void Throw(const bool option)
Enable/disable throw option. 
 
then print u2 $script< option > print u2 Possible stop
 
#define DEBUG(A)
Message macros. 
 
int main(int argc, char *argv[])