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);
 
int main(int argc, const char *argv[])
 
General purpose message reporting.
 
General purpose messaging.
 
#define DEBUG(A)
Message macros.
 
Utility class to parse command line options.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Exception for ControlHost.
 
static void Throw(const bool option)
Enable/disable throw option.
 
Auxiliary class for time values.
 
int GetFullString(std::string &buffer)
Receive string.
 
int CheckHead(JPrefix &prefix, JTimeval timeout=JTimeval::min())
Check for header, without waiting.
 
int SendMeAlways()
Tell server to send messages forever.
 
int Subscribe(const JSubscription &subscription)
Subscribe to single tag.
 
JSubscriptionList & add(const JSubscription &subscription)
Add subscription.
 
Utility class to parse command line options.
 
void open(const char *name, int open_mode=std::ios::out)
 
std::string getFullPath(const std::string &path)
Get full path, i.e. add JEEP::PATHNAME_SEPARATOR if necessary.
 
void close(std::istream *pf)
Close file.
 
std::string getFilename(const std::string &file_name)
Get file name part, i.e. part after last JEEP::PATHNAME_SEPARATOR if any.
 
T * open(const std::string &file_name)
Open file.
 
static const std::string MESSAGE_TAG
Message logging tag.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
static JStat getFileStatus
Function object for file status.
 
Auxiliary data structure for sequence of same character.
 
Auxiliary class for all subscription.
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
 
Auxiliary class for date and time.
 
double getElapsedTime(const JDateAndTime &object) const
Get elapsed time to given date and time.
 
int getHour() const
hours after midnight [0-23]
 
void set(const bool utc=false)
Set to current local time.