12 #ifndef ROOT_TSysEvtHandler
13 #define ROOT_TSysEvtHandler
28 class TSysEvtHandler :
public TObject,
public TQObject {
33 void *GetSender() {
return this; }
36 TSysEvtHandler() : fIsActive(kTRUE) { }
37 virtual ~TSysEvtHandler() { }
41 Bool_t IsActive()
const {
return fIsActive; }
43 virtual void Add() = 0;
44 virtual void Remove() = 0;
45 virtual Bool_t Notify() = 0;
47 virtual void Activated() { Emit(
"Activated()"); }
48 virtual void DeActivated() { Emit(
"DeActivated()"); }
49 virtual void Notified() { Emit(
"Notified()"); }
50 virtual void Added() { Emit(
"Added()"); }
51 virtual void Removed() { Emit(
"Removed()"); }
53 ClassDef(TSysEvtHandler,0)
65 class TFileHandler :
public TSysEvtHandler {
72 TFileHandler(): fFileNum(-1), fMask(0), fReadyMask(0) { }
75 enum { kRead = 1, kWrite = 2 };
77 TFileHandler(
int fd,
int mask);
78 virtual ~TFileHandler() { Remove(); }
79 int GetFd()
const {
return fFileNum; }
80 void SetFd(
int fd) { fFileNum = fd; }
81 virtual Bool_t Notify();
82 virtual Bool_t ReadNotify();
83 virtual Bool_t WriteNotify();
84 virtual Bool_t HasReadInterest();
85 virtual Bool_t HasWriteInterest();
86 virtual void SetInterest(Int_t mask);
87 virtual void ResetReadyMask() { fReadyMask = 0; }
88 virtual void SetReadReady() { fReadyMask |= 0x1; }
89 virtual void SetWriteReady() { fReadyMask |= 0x2; }
90 virtual Bool_t IsReadReady()
const {
return (fReadyMask & 0x1) == 0x1; }
91 virtual Bool_t IsWriteReady()
const {
return (fReadyMask & 0x2) == 0x2; }
93 virtual void Remove();
95 ClassDef(TFileHandler,0)
109 kSigSegmentationViolation,
112 kSigIllegalInstruction,
119 kSigFloatingException,
126 class TSignalHandler :
public TSysEvtHandler {
133 TSignalHandler(): fSignal((ESignals)-1), fSync(kTRUE), fDelay(0) { }
136 TSignalHandler(ESignals sig, Bool_t sync = kTRUE);
137 virtual ~TSignalHandler() { Remove(); }
138 void Delay() { fDelay = 1; }
139 void HandleDelayedSignal();
140 ESignals GetSignal()
const {
return fSignal; }
141 void SetSignal(ESignals sig) { fSignal = sig; }
142 Bool_t IsSync()
const {
return fSync; }
143 Bool_t IsAsync()
const {
return !fSync; }
144 virtual Bool_t Notify();
146 virtual void Remove();
148 ClassDef(TSignalHandler,0)
151 inline void TSignalHandler::HandleDelayedSignal()
169 namespace std {
class exception; }
171 class TStdExceptionHandler :
public TSysEvtHandler {
174 enum EStatus { kSEProceed, kSEHandled, kSEAbort };
176 TStdExceptionHandler();
177 virtual ~TStdExceptionHandler() { }
180 virtual void Remove();
181 virtual Bool_t Notify();
183 virtual EStatus Handle(std::exception& exc) = 0;
185 ClassDef(TStdExceptionHandler,0)