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