next up previous contents index
Next: daq_mon Process Up: Processes Previous: daq_fe Process   Contents   Index


daq_rec Process

The daq_rec process has a unique task of storing events on an I/O device. Recording can be done on disk files only, on the magnetic tape device only, or on both. As a tape device a DLT unit is used. Event recording is always done in an ``exchange'' mode allowing to read data later at any platform.

The central concept of I/O is EventContainer - an abstract class defining an interface common for all I/O classes. All other I/O classes doing file (FileEC), tape (TapeEC), memory (ShMemEC), or network (NetEC) I/O inherit from EventContainer.

class EventContainer {
public:
  enum Mode { in, out, mon };
  enum State { good = 0, eof = 1, pseudo_eof = 2, eot = 4,
               interrupted = 8, fail = 16, bad = 32 };

  EventContainer(Mode aMode = in);
  virtual ~EventContainer();

  bool Good() const;
  bool Fail() const;
  State GetState() const;
  void SetState ( State st );
  void Clear();
  bool Is_EOF() const;
  operator void * () const;
  bool operator ! () const;

  virtual void Open() = 0;
  virtual void Close() = 0;

  virtual void Signal() {}

  virtual EventContainer & operator << (const IstraEvent &) = 0;
  virtual EventContainer & operator >> (IstraEvent &) = 0;

  virtual std::string StrError() const;

  virtual void Statistics(uint32 & nrec, uint32 & nMb,
                          uint32 & nb) const = 0;
  virtual void PrintUsage(std::ostream &) const = 0;
};

User can setup the configuration parameters defining a name of tape drive, tape record size, maximum size of disk files, maximum size of tape files, tape capacity etc as described in the Section 3.6.



Alexander V.Inyakin 2002-04-05