This repository was archived by the owner on Feb 24, 2025. It is now read-only.
- Notifications
You must be signed in to change notification settings - Fork 4
TEventManager
Ivan Semenkov edited this page Oct 25, 2021 · 1 revision
TEventManager is a implementation of observer pattern. You can subscribe for events and by using event manager later fire different types of events.
uses advutils.event; type TEventManager = classEvent is not a real object and to subscribe callback or fire it you need use event id.
type TEventID = type Cardinal;When event fires the subscribed event callback function triggered.
uses advutils.event, utils.any; type TEventManager = class public type TEventCallback = procedure (AData : TAnyValue) of object; end;As callback parameter in function will assigned TAny value.
Create new event manager can by call its constructor.
constructor Create;uses advutils.event; var manager : TEventManager; begin manager := TEventManager.Create; FreeAndNil(manager); end;Subscribe for event can by subscribe procedure.
procedure Subscribe(AEventID : TEventID; ACallback : TEventCallback);Multiple callbacks can be subscribed to each event.
uses advutils.event, utils.any; var manager : TEventManager; procedure Callback(AData : TAnyValue); begin writeln('It''s work!'); end; begin manager := TEventManager.Create; manager.Subscribe(0, {$IFDEF FPC}@{$ENDIF}Callback); FreeAndNil(manager); end;Fire event can by call run function. Returns True if event was runned. If runs event hasn't callback returns False.
function Run(AEventID : TEventID; AData : TAnyValue) : Boolean;You can send any data when fire event by AData parameter. This data will send to callback function.
uses advutils.event, utils.any; var manager : TEventManager; begin manager := TEventManager.Create; manager.Run(0, TIntegerValue.Create(1)); FreeAndNil(manager); end;