Module: Agentic::Observable
- Included in:
- Task
- Defined in:
- lib/agentic/observable.rb
Overview
Custom implementation of the Observer pattern Provides a thread-safe way for objects to notify observers of state changes
Instance Method Summary collapse
-
#add_observer(observer) ⇒ void
Add an observer to this object.
-
#count_observers ⇒ Integer
Return the number of observers.
-
#delete_observer(observer) ⇒ void
Remove an observer from this object.
-
#delete_observers ⇒ void
Remove all observers from this object.
-
#notify_observers(event_type, *args) ⇒ void
Notify all observers of an event.
Instance Method Details
#add_observer(observer) ⇒ void
This method returns an undefined value.
Add an observer to this object
10 11 12 13 |
# File 'lib/agentic/observable.rb', line 10 def add_observer(observer) @_observers ||= [] @_observers << observer unless @_observers.include?(observer) end |
#count_observers ⇒ Integer
Return the number of observers
30 31 32 |
# File 'lib/agentic/observable.rb', line 30 def count_observers @_observers ? @_observers.size : 0 end |
#delete_observer(observer) ⇒ void
This method returns an undefined value.
Remove an observer from this object
18 19 20 |
# File 'lib/agentic/observable.rb', line 18 def delete_observer(observer) @_observers&.delete(observer) end |
#delete_observers ⇒ void
This method returns an undefined value.
Remove all observers from this object
24 25 26 |
# File 'lib/agentic/observable.rb', line 24 def delete_observers @_observers = [] end |
#notify_observers(event_type, *args) ⇒ void
This method returns an undefined value.
Notify all observers of an event
38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/agentic/observable.rb', line 38 def notify_observers(event_type, *args) return unless @_observers # Make a thread-safe copy of the observers array observers = @_observers.dup observers.each do |observer| if observer.respond_to?(:update) observer.update(event_type, self, *args) end end end |