Subscribable Event
2108 Views
-
using { /Verse.org/Concurrency } subscribable_event<public>(t:type) := class(subscribable(t), signalable(t)): var Callbacks<private>:[]tuple(type{_(:t):void}, int) = array{} var NextID<private>:int = 0 Signal<override>(Payload:t):void = for (Callback : Callbacks) do Callback(0)(Payload) Subscribe<override>(Callback:type{_(:t):void})<transacts>:cancelable = ID := NextID set NextID += 1 set Callbacks += array{(Callback, ID)} return basic_cancelable: ID := ID CancelCallback := CancelSubscription CancelAllSubscriptions<public>()<transacts>:void = set Callbacks = array{} CancelSubscription<private>(ID:int)<transacts>:void = set Callbacks = for (Callback : Callbacks, Callback(1) <> ID) do Callback listenable_event<public>(t:type) := class(subscribable_event(t), listenable(t)):
You're reading a preview
The full reference is free for BrainDeadGuild Discord members — sign in to read it all, or open the original at the source.
Sign in with your BrainDead.TV / BrainDeadGuild Discord account for full access.