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

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#observersObject (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_obsObject

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