Module: FileStore::ObservedSubject
- Defined in:
- lib/filestore/observer.rb
Overview
Module FileStore::ObservedSubject can be mixed in to implement an observed object.
Instance Attribute Summary collapse
-
#observers ⇒ Object
readonly
Reader for collection of observers.
Class Method Summary collapse
-
.included(klass) ⇒ Object
Module hook executed after the inclusion.
Instance Method Summary collapse
-
#inform(msg) ⇒ Object
Informs registered observers about an action .
-
#initialize_obs ⇒ Object
Initializes needed attributes for implementing observer.
-
#register(obj) ⇒ Object
Registers an concrete observer.
-
#unregister(obj) ⇒ Object
Removes a concrete observer.
Instance Attribute Details
#observers ⇒ Object (readonly)
Reader for collection of observers
64 65 66 |
# File 'lib/filestore/observer.rb', line 64 def observers @observers end |
Class Method Details
.included(klass) ⇒ Object
Module hook executed after the inclusion. Currently nothing happens here
69 70 |
# File 'lib/filestore/observer.rb', line 69 def self.included(klass) end |
Instance Method Details
#inform(msg) ⇒ Object
Informs registered observers about an action
Arguments:
msg: Some information sent to all registered observers
115 116 117 118 119 |
# File 'lib/filestore/observer.rb', line 115 def inform(msg) @observers.each do |o| o.notify msg, self end end |
#initialize_obs ⇒ Object
Initializes needed attributes for implementing observer. Should be called in any constructor including this module
75 76 77 78 |
# File 'lib/filestore/observer.rb', line 75 def initialize_obs @observers = [] self.logger.debug "Initialized ObservedStore, added observers array" if not self.logger.nil? end |
#register(obj) ⇒ Object
Registers an concrete observer
Arguments:
obj: The object added as an observer. Must be an instance of
FileStore::Observer
86 87 88 89 90 91 92 93 |
# File 'lib/filestore/observer.rb', line 86 def register(obj) if obj.is_a?(Observer) and not obj.nil? and not @observers.include?(obj) then @observers << obj @logger.debug "Added #{obj} to observers" if not self.logger.nil? else raise FileStoreException, "Only instances of FileStore::Observer can be registered" end end |
#unregister(obj) ⇒ Object
Removes a concrete observer
Arguments:
obj: The observer to be removed. Obviously, it needs to be
registered before-hand
101 102 103 104 105 106 107 108 |
# File 'lib/filestore/observer.rb', line 101 def unregister(obj) if @observers.include?(obj) then @observers.delete_at(@observers.index(obj)) @logger.debug "Removed observing object #{obj} from the list" if not self.logger.nil? else raise FileStoreException, "Object #{obj} isn't a registered observer" end end |