ROOT logo
#ifndef __TMrbTail_h__
#define __TMrbTail_h__

//_________________________________________________[C++ CLASS DEFINITION FILE]
//////////////////////////////////////////////////////////////////////////////
// Name:           utils/inc/TMrbTail.h
// Purpose:        Define utilities to be used with MARaBOU
// Class:          TMrbTail    -- tail utility
// Description:    Common class definitions to be used within MARaBOU
// Author:         R. Lutter
// Revision:       $Id: TMrbTail.h,v 1.11 2008-08-26 06:33:24 Rudolf.Lutter Exp $       
// Date:           
// Keywords:
//////////////////////////////////////////////////////////////////////////////

namespace std {} using namespace std;

#include <cstdlib>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <fstream>

#include "TMrbNamedX.h"
#include "TMrbLogger.h"

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbTail
// Purpose:        Tail utility for MARaBOU
// Description:    Methods to implement a tail function in MARaBOU
// Keywords:
//////////////////////////////////////////////////////////////////////////////

class TMrbTail: public TMrbNamedX {

	public:
		enum EMrbTailOut		{	kMrbTailOutUndef = 0,
									kMrbTailOutLogger,
									kMrbTailOutStdio,
									kMrbTailOutSlot
								};

	public:
		TMrbTail() {};												 	// default ctor
		TMrbTail(const Char_t * TailName, const Char_t * TailFile); 	// explicit ctors
		TMrbTail(const Char_t * TailName, FILE * TailStrm);

		virtual ~TMrbTail() {};											// dtor

		Bool_t SetOutput(TMrbLogger * Logger);											// define output: logger
		Bool_t SetOutput(ostream & Stdout, ostream & StdErr);							// ... stdio
		Bool_t SetOutput(const Char_t * RecvName, TObject * Recv, const Char_t * Slot); // ... signal/slot

		inline TFileHandler * GetFH() { return(fFH); };
		void Start();
		void HandleInput();

		inline void Help() { gSystem->Exec(Form("mrbHelp %s", this->ClassName())); };

	protected:
		void Setup();
		void ToLogger(TString & Text);
		void ToStdio(TString & Text);

	protected:
		TString fTailFile;
		FILE * fStrm;					//! ... stream (fdopen(3))
		Bool_t fStopIt;					// kTRUE stops output

		TFileHandler * fFH; 			//!

		EMrbTailOut fOutputMode;		// output mode: logger, stdio, array
		TMrbLogger * fLogger;
		ostream * fStdout;
		ostream * fStderr;
		TMrbNamedX fRecv;

	ClassDef(TMrbTail, 1) 				// [Utils] Tail utility
};

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