ROOT logo
// @(#)root/base:$Id: TMessageHandler.h 22415 2008-03-01 11:00:27Z rdm $
// Author: Rene Brun   11/11/99

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TMessageHandler
#define ROOT_TMessageHandler


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TMessageHandler                                                      //
//                                                                      //
// Handle messages that might be generated by the system.               //
// By default a handler only keeps track of the different messages      //
// generated for a specific class. By deriving from this class and      //
// overriding Notify() one can implement custom message handling.       //
// In Notify() one has access to the message id and the object          //
// generating the message. One can install more than one message        //
// handler per class. A message handler can be removed or again         //
// added when needed.                                                   //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TNamed
#include "TNamed.h"
#endif
#ifndef ROOT_TQObject
#include "TQObject.h"
#endif

class TMessageHandler : public TNamed, public TQObject {

protected:
   const TClass   *fClass;      // class for which message has to be handled
   const TObject  *fMessObj;    // object generating message
   Int_t           fMessId;     // message id (often matching specific enum in fClass)
   Int_t           fSize;       // number of different messages handled
   Int_t          *fCnts;       // count per message
   Int_t          *fMessIds;    // message ids
   Bool_t          fDerived;    // if true handle messages also for derived classes

   void  *GetSender() { return this; }  //used to set gTQSender

public:
   TMessageHandler(const TClass *cl, Bool_t derived = kTRUE);
   TMessageHandler(const char *cl, Bool_t derived = kTRUE);
   virtual ~TMessageHandler();

   Int_t           GetSize() const { return fSize; }
   virtual Int_t   GetMessageCount(Int_t messId) const;
   virtual Int_t   GetTotalMessageCount() const;
   Bool_t          HandleDerived() const { return fDerived; }
   virtual void    HandleMessage(Int_t id, const TObject *obj);

   virtual void    Print(Option_t *option= "") const;

   virtual void    Add();
   virtual void    Remove();
   virtual Bool_t  Notify();

   virtual void    Added()    { Emit("Added()"); }       //*SIGNAL*
   virtual void    Removed()  { Emit("Removed()"); }     //*SIGNAL*
   virtual void    Notified() { Emit("Notified()"); }    //*SIGNAL*

   ClassDef(TMessageHandler,0)  // Generic message handler
};

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