ROOT logo
// $Id: UdpPacketTreeWriter.h 2801 2012-06-29 06:46:22Z matevz $

// Copyright (C) 1999-2008, Matevz Tadel. All rights reserved.
// This file is part of GLED, released under GNU General Public License version 2.
// For the licensing terms see $GLEDSYS/LICENSE or http://www.gnu.org/.

#ifndef Net1_UdpPacketTreeWriter_H
#define Net1_UdpPacketTreeWriter_H

#include "Glasses/ZGlass.h"
#include "Gled/GQueue.h"


class ZLog;
class UdpPacketSource;
class SUdpPacket;
class GSignal;

class TFile;
class TTree;
class TBranch;


class UdpPacketTreeWriter : public ZGlass
{
  MAC_RNR_FRIENDS(UdpPacketTreeWriter);

private:
  void _init();

protected:
  ZLink<ZLog>             mLog;              // X{GS} L{}
  ZLink<UdpPacketSource>  mSource;           // X{GS} L{}

  Int_t                   mAutoSaveEntries;  // X{GS} 7 Value(-range=>[0, 1000000, 1])
  Int_t                   mAutoSaveMinutes;  // X{GS} 7 Value(-range=>[0, 14400, 1])
  GTime                   mLastAutoSave;     //!X{GR} 7 TimeOut()
  Int_t                   mRotateMinutes;    // X{GS} 7 Value(-range=>[0, 14400, 1])
  Bool_t                  bRotateAtMidnight; // X{GS} 7 Bool()
  GTime                   mLastFileOpen;     //!X{GR} 7 TimeOut()

  GQueue<SUdpPacket>      mUdpQueue;         //!

  Bool_t                  bRunning;          //! X{G} 7 BoolOut()
  Bool_t                  bForceAutoSave;    //!
  Bool_t                  bForceRotate;      //!

  GThread                *mWLThread;         //!

  Bool_t                  bFileIdxAlways;    // X{GS} 7 Bool()
  TString                 mFilePrefix;       // X{GS} 7 Textor()
  TString                 mTreeName;         // X{GS} 7 Textor()
  TString                 mFileNameTrue;     //!
  TString                 mFileLastDate;     //!
  Int_t                   mFileLastIdx;      //!
  TFile                  *mFile;             //!
  TTree                  *mTree;             //!
  TBranch                *mBranch;           //!

  void open_file_create_tree();
  void write_tree_close_file();

  void check_file_rotate();

  static void cu_WriteLoop(UdpPacketTreeWriter* w);

  void WriteLoop();

public:
  UdpPacketTreeWriter(const Text_t* n="UdpPacketTreeWriter", const Text_t* t=0);
  virtual ~UdpPacketTreeWriter();

  void Start();        // X{Ed} 7 MButt()
  void Stop();         // X{Ed} 7 MButt()

  void RotateTree();   // X{E}  7 MButt()
  void AutoSaveTree(); // X{E}  7 MButt()

#include "UdpPacketTreeWriter.h7"
  ClassDef(UdpPacketTreeWriter, 1);
}; // endclass UdpPacketTreeWriter

#endif
 UdpPacketTreeWriter.h:1
 UdpPacketTreeWriter.h:2
 UdpPacketTreeWriter.h:3
 UdpPacketTreeWriter.h:4
 UdpPacketTreeWriter.h:5
 UdpPacketTreeWriter.h:6
 UdpPacketTreeWriter.h:7
 UdpPacketTreeWriter.h:8
 UdpPacketTreeWriter.h:9
 UdpPacketTreeWriter.h:10
 UdpPacketTreeWriter.h:11
 UdpPacketTreeWriter.h:12
 UdpPacketTreeWriter.h:13
 UdpPacketTreeWriter.h:14
 UdpPacketTreeWriter.h:15
 UdpPacketTreeWriter.h:16
 UdpPacketTreeWriter.h:17
 UdpPacketTreeWriter.h:18
 UdpPacketTreeWriter.h:19
 UdpPacketTreeWriter.h:20
 UdpPacketTreeWriter.h:21
 UdpPacketTreeWriter.h:22
 UdpPacketTreeWriter.h:23
 UdpPacketTreeWriter.h:24
 UdpPacketTreeWriter.h:25
 UdpPacketTreeWriter.h:26
 UdpPacketTreeWriter.h:27
 UdpPacketTreeWriter.h:28
 UdpPacketTreeWriter.h:29
 UdpPacketTreeWriter.h:30
 UdpPacketTreeWriter.h:31
 UdpPacketTreeWriter.h:32
 UdpPacketTreeWriter.h:33
 UdpPacketTreeWriter.h:34
 UdpPacketTreeWriter.h:35
 UdpPacketTreeWriter.h:36
 UdpPacketTreeWriter.h:37
 UdpPacketTreeWriter.h:38
 UdpPacketTreeWriter.h:39
 UdpPacketTreeWriter.h:40
 UdpPacketTreeWriter.h:41
 UdpPacketTreeWriter.h:42
 UdpPacketTreeWriter.h:43
 UdpPacketTreeWriter.h:44
 UdpPacketTreeWriter.h:45
 UdpPacketTreeWriter.h:46
 UdpPacketTreeWriter.h:47
 UdpPacketTreeWriter.h:48
 UdpPacketTreeWriter.h:49
 UdpPacketTreeWriter.h:50
 UdpPacketTreeWriter.h:51
 UdpPacketTreeWriter.h:52
 UdpPacketTreeWriter.h:53
 UdpPacketTreeWriter.h:54
 UdpPacketTreeWriter.h:55
 UdpPacketTreeWriter.h:56
 UdpPacketTreeWriter.h:57
 UdpPacketTreeWriter.h:58
 UdpPacketTreeWriter.h:59
 UdpPacketTreeWriter.h:60
 UdpPacketTreeWriter.h:61
 UdpPacketTreeWriter.h:62
 UdpPacketTreeWriter.h:63
 UdpPacketTreeWriter.h:64
 UdpPacketTreeWriter.h:65
 UdpPacketTreeWriter.h:66
 UdpPacketTreeWriter.h:67
 UdpPacketTreeWriter.h:68
 UdpPacketTreeWriter.h:69
 UdpPacketTreeWriter.h:70
 UdpPacketTreeWriter.h:71
 UdpPacketTreeWriter.h:72
 UdpPacketTreeWriter.h:73
 UdpPacketTreeWriter.h:74
 UdpPacketTreeWriter.h:75
 UdpPacketTreeWriter.h:76
 UdpPacketTreeWriter.h:77
 UdpPacketTreeWriter.h:78
 UdpPacketTreeWriter.h:79
 UdpPacketTreeWriter.h:80
 UdpPacketTreeWriter.h:81
 UdpPacketTreeWriter.h:82
 UdpPacketTreeWriter.h:83