80 const std::string&
path) :
135 properties[
"path"] =
path;
139 properties.
read(
string(buffer, length));
240 this->buffer.swap(null);
276 istringstream
in(__str__);
297 TFile* out = i->second->GetCurrentFile();
299 if (out != NULL && out->IsOpen()) {
307 in >> preamble >> version >> header;
313 const Int_t nb = i->second->copy(
in);
315 if (nb < (
int)
buffer.size() ||
in.tellg() != (int)
buffer.size()) {
333 << header.getRunNumber()
369 std::ostringstream message;
431 while (!this->empty() && this->begin()->
first < run) {
432 this->erase(this->begin());
444 const_iterator p = this->find(run);
446 return p != this->end() && p->second.is_written;
462 in.clear(std::ios::eofbit);
464 if (in && run != -1) {
468 if (value.
count == 0) {
492 if (p != this->end() && p->second.count != 0 && !p->second.is_written) {
494 file->WriteTObject(&p->second.parameters);
496 p->second.is_written =
true;
513 int main(
int argc,
char* argv[])
517 using namespace KM3NETDAQ;
529 JParser<> zap(
"Application for writing real-time data to disk.");
541 catch(
const exception &error) {
542 FATAL(error.what() << endl);
JDataWriter(const std::string &name, const std::string &server, const std::string &hostname, JLogger *logger, const int level, const std::string &path)
Constructor.
Message logger with time scheduler.
Utility class to parse command line options.
Runcontrol client to write data to disk.
bool read(const JEquation &equation)
Read equation.
std::vector< char > buffer
internal buffer for incoming data
void status(const JMessage_t &message)
static const int MAXIMUM_FILE_NUMBER
maximum file number for overwrite protection.
ROOT TTree parameter settings.
JDAQStateMachine::ev_configure_event ev_configure
JDAQStateMachine::ev_error_event ev_error
virtual void actionInit(int length, const char *buffer)
std::string getProcessName(const std::string &name, const std::string &process)
Get process name of run control client.
Message logging based on std::ostream.
bool has(const int file_descriptor) const
Has file descriptor.
void set(const int file_descriptor)
Set file descriptor.
virtual void setSelect(JFileDescriptorMask &mask) const
Set the file descriptor mask for the select call.
void reset(const int run)
Remove all entries before given run.
virtual void close()
Close file.
JMessageScheduler logErrorState
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
Interface for logging messages.
Message logging based on ControlHost.
Utility class to parse parameter values.
void setClockInterval(const long long int interval_us)
Set interval time.
Auxiliary data structure for I/O of trigger parameters.
std::string hostname
host name of data server
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
Simple data structure to support I/O of equations (see class JLANG::JEquation).
static const JNET::JTag IO_TRIGGER_PARAMETERS
JTreeWriter_t writer
TTree writer.
void replaceEvent(const JTag &oldTag, const JTag &newTag, JDAQEvent_t &event)
Replace tag of given event in event table.
JSharedPointer< JControlHost > server
message server
Auxiliary class for a type holder.
void run()
Run as run control client following command messages via JNET::JControlHost.
std::string getFullPath(const std::string &path)
Get full path, i.e. add JEEP::PATHNAME_SEPARATOR if necessary.
bool is_written(const int run) const
Check if trigger parameters have been written for given run.
int getSize() const
Get size.
Utility class to parse parameter values.
virtual void actionReset(int length, const char *buffer)
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
long long int numberOfBytes
Map run number to trigger parameters.
JMessageScheduler logErrorRun
int getDetectorID() const
Get detector identifier.
virtual void actionConfigure(int length, const char *buffer)
static JKey_t getKey(JType< T > type)
Get key.
TFile * getFile() const
Get file.
virtual void actionQuit(int length, const char *buffer)
Scheduling of actions via fixed latency intervals.
I/O formatting auxiliaries.
The template JSharedPointer class can be used to share a pointer to an object.
static const JNET::JTag RC_LOG
JMessageScheduler logErrorFile
virtual void actionStart(int length, const char *buffer)
JSUPPORT::JAutoTreeWriter< JNET::JTag > JTreeWriter_t
Type definition of auto map.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
virtual void open(const char *file_name)
Open file.
JValue_t()
Default constructor.
Auxiliary class for method select.
Auxiliary class for CPU timing and usage.
JMessageScheduler logErrorTag
virtual void actionStop(int length, const char *buffer)
JSubscriptionList & add(const JSubscription &subscription)
Add subscription.
map_type::iterator iterator
Level specific message streamers.
Exception for ControlHost.
JTriggerParameters parameters
trigger parameters
char getTokenDelimeter()
Get the token delimeter for command messages.
bool isRunning() const
Check if this client is in runnig state.
Auxiliary class for all subscription.
const JTag & getTag() const
Get tag.
Auxiliary data structure for sequence of same character.
static const JNET::JTag RC_DWRITER
virtual bool is_open() const
Check is file is open.
void write(const int run, TFile *file)
Write trigger parameters for given run if not yet done.
std::string toString() const
Convert tag to string.
int getRunNumber() const
Get run number.
void insert()
Insert (list of) data type(s).
void typeout()
Report status of data writing.
const std::string & getFullName() const
Get full name of this run control client.
Control unit client base class.
Utility class to parse command line options.
virtual void actionRunning()
This method is repeatedly called when this client machine is in state Running and the clock interval ...
virtual bool enter(const JArgs &args)
Enter the state machine.
JMessageLogger logger
message logger
static const JNET::JTag RC_CMD
static const JNET::JTag IO_EVENT
virtual void typeout(const std::string &tag, const std::string &message)
Report message.
KM3NeT DAQ constants, bit handling, etc.
bool is_written
writer status
JLANG::JSharedPointer< JControlHost > datawriter
virtual void actionSelect(const JFileDescriptorMask &mask)
Action method following last select call.
static void Throw(const bool option)
Enable/disable throw option.
esac $JPP_BIN JLogger sh $LOGGER until pgrep JGetMessage</dev/null > dev null
unsigned long long usec_wall
bool read(std::istream &in)
Read trigger parameters.
bool putObject(TDirectory *dir, const T &object)
Write object to ROOT directory.
int main(int argc, char *argv[])