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;
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();
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.
int main(int argc, char *argv[])
void set(const bool utc=false)
Set to current local time.
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.
then usage $script[port]< option > nPossible stop
Auxiliary class for time values.
int CheckHead(JPrefix &prefix, JTimeval timeout=JTimeval::min())
Check for header, without waiting.
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.
$WORKDIR driver txt done cat $WORKDIR driver txt<< EOFprocess ${DATAFILTER}$FILTER_HOST csh-c '(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&(JDataFilter-H\$SERVER\$-M\$LOGGER\$-d $DEBUG-u ${DATAFILTER}-P $PORT</dev/null > &/dev/null &))';process ${DATAWRITER}$WRITER_HOST csh-c '(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&(JDataWriter-H\$SERVER\$-M\$LOGGER\$-d $DEBUG-u ${DATAWRITER}</dev/null > &/dev/null &))';print enterevent ev_init{RC_CMD}event ev_reset{RC_CMD}event ev_init{RC_CMD}event ev_configure{RC_DFLTR%<$WORKDIR/ev_configure_datafilter.txt > RC_DQSIM<$WORKDIR/ev_configure_dqsimulator.txt > RC_DWRT path
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 to given date and time.
static JStat getFileStatus
Function object for file status.
General purpose message reporting.
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Auxiliary class for 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.
#define DEBUG(A)
Message macros.