1 /* 2 * Copyright 2015, Axel Dörfler, axeld@pinc-software.de. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef EVENTS_H 6 #define EVENTS_H 7 8 9 #include <Messenger.h> 10 #include <String.h> 11 12 13 class BaseJob; 14 class Event; 15 16 17 class EventRegistrator { 18 public: 19 virtual status_t RegisterEvent(Event* event) = 0; 20 virtual void UnregisterEvent(Event* event) = 0; 21 }; 22 23 24 class Event { 25 public: 26 Event(Event* parent); 27 virtual ~Event(); 28 29 virtual status_t Register( 30 EventRegistrator& registrator) const = 0; 31 virtual void Unregister( 32 EventRegistrator& registrator) const = 0; 33 34 bool Triggered() const; 35 virtual void Trigger(); 36 void ResetTrigger(); 37 38 virtual BaseJob* Owner() const; 39 virtual void SetOwner(BaseJob* owner); 40 41 Event* Parent() const; 42 43 virtual BString ToString() const = 0; 44 45 private: 46 Event* fParent; 47 bool fTriggered; 48 }; 49 50 51 class Events { 52 public: 53 static Event* FromMessage(const BMessenger& target, 54 const BMessage& message); 55 static Event* AddOnDemand(Event* event); 56 static bool ResolveRegisteredEvent(Event* event, 57 const char* name); 58 static void TriggerRegisteredEvent(Event* event, 59 const char* name); 60 static bool TriggerDemand(Event* event); 61 }; 62 63 64 #endif // EVENTS_H 65