@@ -11,102 +11,102 @@ import ThreadSafeSwift
1111import Observable
1212
1313/**
14- An implementation of `EventHandler` designed to Queue/Stack outbound events, and Dispatch them to all registered `listeners `
14+ An implementation of `EventHandler` designed to Queue/Stack outbound events, and Dispatch them to all registered `receivers `
1515 - Author: Simon J. Stuart
1616 - Version: 1.0.0
1717 - Note: While you can inherit from and even create instances of `EventDispatcher`, best practice would be to use `EventCentral.shared` as the central Event Dispatcher.
1818 */
1919open class EventDispatcher : EventHandler , EventDispatchable {
20- struct ListenerContainer {
21- weak var listener : ( any EventReceivable ) ?
20+ struct ReceiverContainer {
21+ weak var receiver : ( any EventReceivable ) ?
2222 }
2323
2424 /**
25- Stores all of the Listeners against the fully-qualified name of the corresponding `Eventable` Type
25+ Stores all of the Receivers against the fully-qualified name of the corresponding `Eventable` Type
2626 - Author: Simon J. Stuart
2727 - Version: 1.0.0
2828 */
29- @ThreadSafeSemaphore private var listeners = [ String: [ ListenerContainer ] ] ( )
29+ @ThreadSafeSemaphore private var receivers = [ String: [ ReceiverContainer ] ] ( )
3030
31- public func addListener ( _ listener : any EventReceivable , forEventType: Eventable . Type ) {
31+ public func addReceiver ( _ receiver : any EventReceivable , forEventType: Eventable . Type ) {
3232 let eventTypeName = String ( reflecting: forEventType)
3333
34- _listeners . withLock { listeners in
35- var bucket = listeners [ eventTypeName]
34+ _receivers . withLock { receivers in
35+ var bucket = receivers [ eventTypeName]
3636 let newBucket = bucket == nil
37- if newBucket { bucket = [ ListenerContainer ] ( ) } /// If there's no Bucket for this Event Type, create one
37+ if newBucket { bucket = [ ReceiverContainer ] ( ) } /// If there's no Bucket for this Event Type, create one
3838
39- /// If it's NOT a New Bucket, and the Bucket already contains this Listener ...
40- if !newBucket && bucket!. contains ( where: { listenerContainer in
41- listenerContainer . listener != nil && ObjectIdentifier ( listenerContainer . listener !) == ObjectIdentifier ( listener )
39+ /// If it's NOT a New Bucket, and the Bucket already contains this Receiver ...
40+ if !newBucket && bucket!. contains ( where: { receiverContainer in
41+ receiverContainer . receiver != nil && ObjectIdentifier ( receiverContainer . receiver !) == ObjectIdentifier ( receiver )
4242 } ) {
4343 return // ... just Return!
4444 }
4545
46- /// If we reach here, the Listener is not already in the Bucket, so let's add it!
47- bucket!. append ( ListenerContainer ( listener : listener ) )
48- listeners [ eventTypeName] = bucket!
46+ /// If we reach here, the Receiver is not already in the Bucket, so let's add it!
47+ bucket!. append ( ReceiverContainer ( receiver : receiver ) )
48+ receivers [ eventTypeName] = bucket!
4949 }
5050 }
5151
52- public func removeListener ( _ listener : any EventReceivable , forEventType: Eventable . Type ) {
52+ public func removeReceiver ( _ receiver : any EventReceivable , forEventType: Eventable . Type ) {
5353 let eventTypeName = String ( reflecting: forEventType)
5454
55- _listeners . withLock { listeners in
56- var bucket = listeners [ eventTypeName]
57- if bucket == nil { return } /// Can't remove a Listener if there isn't even a Bucket for hte Event Type
55+ _receivers . withLock { receivers in
56+ var bucket = receivers [ eventTypeName]
57+ if bucket == nil { return } /// Can't remove a Receiver if there isn't even a Bucket for hte Event Type
5858
59- /// Remove any Listeners from this Event-Type Bucket for the given `listener ` instance.
60- bucket!. removeAll { listenerContainer in
61- listenerContainer . listener != nil && ObjectIdentifier ( listenerContainer . listener !) == ObjectIdentifier ( listener )
59+ /// Remove any Receivers from this Event-Type Bucket for the given `receiver ` instance.
60+ bucket!. removeAll { receiverContainer in
61+ receiverContainer . receiver != nil && ObjectIdentifier ( receiverContainer . receiver !) == ObjectIdentifier ( receiver )
6262 }
6363 }
6464 }
6565
66- public func removeListener ( _ listener : any EventReceivable ) {
67- _listeners . withLock { listeners in
68- for (eventTypeName, bucket) in listeners { /// Iterate every Event Type
66+ public func removeReceiver ( _ receiver : any EventReceivable ) {
67+ _receivers . withLock { receivers in
68+ for (eventTypeName, bucket) in receivers { /// Iterate every Event Type
6969 var newBucket = bucket // Copy the Bucket
70- newBucket. removeAll { listenerContainer in /// Remove any occurences of the given Listener from the Bucket
71- listenerContainer . listener != nil && ObjectIdentifier ( listenerContainer . listener !) == ObjectIdentifier ( listener )
70+ newBucket. removeAll { receiverContainer in /// Remove any occurences of the given Receiver from the Bucket
71+ receiverContainer . receiver != nil && ObjectIdentifier ( receiverContainer . receiver !) == ObjectIdentifier ( receiver )
7272 }
73- listeners [ eventTypeName] = newBucket /// Update the Bucket for this Event Type
73+ receivers [ eventTypeName] = newBucket /// Update the Bucket for this Event Type
7474 }
7575 }
7676 }
7777
7878 /**
79- Dispatch the Event to all Subscribed Listeners
79+ Dispatch the Event to all Subscribed Receivers
8080 - Author: Simon J. Stuart
8181 - Version: 1.0.0
8282 */
8383 override internal func processEvent( _ event: any Eventable , dispatchMethod: EventDispatchMethod , priority: EventPriority ) {
8484 let eventTypeName = String ( reflecting: type ( of: event) )
8585
86- var snapListeners = [ String: [ ListenerContainer ] ] ( )
86+ var snapReceivers = [ String: [ ReceiverContainer ] ] ( )
8787
88- _listeners . withLock { listeners in
89- // We should take this opportunity to remove any nil listeners
90- listeners [ eventTypeName] ? . removeAll ( where: { listenerContainer in
91- listenerContainer . listener == nil
88+ _receivers . withLock { receivers in
89+ // We should take this opportunity to remove any nil receivers
90+ receivers [ eventTypeName] ? . removeAll ( where: { receiverContainer in
91+ receiverContainer . receiver == nil
9292 } )
93- snapListeners = listeners
93+ snapReceivers = receivers
9494 }
9595
96- let bucket = snapListeners [ eventTypeName]
97- if bucket == nil { return } /// No Listeners , so nothing more to do!
96+ let bucket = snapReceivers [ eventTypeName]
97+ if bucket == nil { return } /// No Receivers , so nothing more to do!
9898
99- for listener in bucket! {
100- if listener . listener == nil { /// If the Listener is `nil`...
99+ for receiver in bucket! {
100+ if receiver . receiver == nil { /// If the Recevier is `nil`...
101101 continue
102102 }
103103
104- // so, we have a listener ... let's deal with it!
104+ // so, we have a receiver ... let's deal with it!
105105 switch dispatchMethod {
106106 case . stack:
107- listener . listener !. stackEvent ( event, priority: priority)
107+ receiver . receiver !. stackEvent ( event, priority: priority)
108108 case . queue:
109- listener . listener !. queueEvent ( event, priority: priority)
109+ receiver . receiver !. queueEvent ( event, priority: priority)
110110 }
111111 }
112112 }
0 commit comments