Module: SPQR::Raiseable::InstanceMixins

Defined in:
lib/spqr/event.rb

Instance Method Summary collapse

Instance Method Details

#appObject



113
114
115
# File 'lib/spqr/event.rb', line 113

def app
  self.class.app
end

#bang!Object



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/spqr/event.rb', line 125

def bang!
  unless schema_class
    log.fatal("No schema class defined for SPQR event class #{self.class.name}; will not raise event.  Did you register this event class?")
    return
  end
  
  log.info("Raising an event of class #{self.class.name}")
  
  event = Qmf::QmfEvent.new(schema_class)
  log.debug "Created QmfEvent is #{event.inspect}"
  
  self.class.spqr_meta.args.each do |arg|
    val = self.send arg.name
    log.debug "setting #{arg.name} of event to #{val}"
    event.send "#{arg.name}=", val
  end
  
  log.debug "event to raise is #{event.inspect} (#{event})"
  log.debug "arguments are #{event.arguments.inspect} (#{event.arguments})"

  
  app.agent.raise_event(event)
end

#initialize(*args) ⇒ Object



101
102
103
104
105
106
107
108
109
110
111
# File 'lib/spqr/event.rb', line 101

def initialize(*args)
  if args.size > self.class.attr_setters.size
    msg = "Too many arguments (max #{self.class.attr_setters.size}) to #{self.class.name}#initialize:  #{args}"
    log.error msg
    raise ArgumentError.new(msg)
  end
  
  message_pairs = self.class.attr_setters.zip(args).reject {|setter,val| val==nil}
  message_pairs.each {|message| self.send *message}
    
end

#logObject



121
122
123
# File 'lib/spqr/event.rb', line 121

def log
  self.class.log
end

#schema_classObject



117
118
119
# File 'lib/spqr/event.rb', line 117

def schema_class
  self.class.schema_class
end