Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TMessageHandler.h
Go to the documentation of this file.
1// @(#)root/base:$Id$
2// Author: Rene Brun 11/11/99
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TMessageHandler
13#define ROOT_TMessageHandler
14
15
16//////////////////////////////////////////////////////////////////////////
17// //
18// TMessageHandler //
19// //
20// Handle messages that might be generated by the system. //
21// By default a handler only keeps track of the different messages //
22// generated for a specific class. By deriving from this class and //
23// overriding Notify() one can implement custom message handling. //
24// In Notify() one has access to the message id and the object //
25// generating the message. One can install more than one message //
26// handler per class. A message handler can be removed or again //
27// added when needed. //
28// //
29//////////////////////////////////////////////////////////////////////////
30
31#include "TNamed.h"
32#include "TQObject.h"
33
34class TMessageHandler : public TNamed, public TQObject {
35
36protected:
37 const TClass *fClass; // class for which message has to be handled
38 const TObject *fMessObj; // object generating message
39 Long_t fMessId; // message id (often matching specific enum in fClass)
40 Int_t fSize; // number of different messages handled
41 Int_t *fCnts; // count per message
42 Long_t *fMessIds; // message ids
43 Bool_t fDerived; // if true handle messages also for derived classes
44
45 void *GetSender() override { return this; } //used to set gTQSender
46
47public:
48 TMessageHandler(const TClass *cl, Bool_t derived = kTRUE);
49 TMessageHandler(const char *cl, Bool_t derived = kTRUE);
50 virtual ~TMessageHandler();
51
52 Int_t GetSize() const { return fSize; }
53 virtual Int_t GetMessageCount(Long_t messId) const;
54 virtual Int_t GetTotalMessageCount() const;
55 Bool_t HandleDerived() const { return fDerived; }
56 virtual void HandleMessage(Long_t id, const TObject *obj);
57
58 void Print(Option_t *option= "") const override;
59
60 virtual void Add();
61 virtual void Remove();
62 Bool_t Notify() override;
63
64 virtual void Added() { Emit("Added()"); } //*SIGNAL*
65 virtual void Removed() { Emit("Removed()"); } //*SIGNAL*
66 virtual void Notified() { Emit("Notified()"); } //*SIGNAL*
67
68 ClassDefOverride(TMessageHandler,0) // Generic message handler
69};
70
71#endif
bool Bool_t
Definition RtypesCore.h:63
int Int_t
Definition RtypesCore.h:45
long Long_t
Definition RtypesCore.h:54
constexpr Bool_t kTRUE
Definition RtypesCore.h:93
const char Option_t
Definition RtypesCore.h:66
#define ClassDefOverride(name, id)
Definition Rtypes.h:346
Option_t Option_t option
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition TClass.h:81
Handle messages that might be generated by the system.
virtual void Removed()
virtual Int_t GetMessageCount(Long_t messId) const
Return counter for message with ID=messid.
const TObject * fMessObj
virtual ~TMessageHandler()
Clean up the message handler.
Bool_t HandleDerived() const
virtual void Remove()
Remove this message handler from the list of messages handlers.
virtual void HandleMessage(Long_t id, const TObject *obj)
Store message origin, keep statistics and call Notify().
void Print(Option_t *option="") const override
Print statistics for this message handler.
virtual void Added()
virtual Int_t GetTotalMessageCount() const
Return total number of messages.
virtual void Add()
Add this message handler to the list of messages handlers.
const TClass * fClass
virtual void Notified()
Int_t GetSize() const
void * GetSender() override
Bool_t Notify() override
This method must be overridden to handle object notification.
The TNamed class is the base class for all named ROOT classes.
Definition TNamed.h:29
Mother of all ROOT objects.
Definition TObject.h:41
This is the ROOT implementation of the Qt object communication mechanism (see also http://www....
Definition TQObject.h:48
void Emit(const char *signal, const T &arg)
Activate signal with single parameter.
Definition TQObject.h:164