class Flor::BasicTasker
Attributes
conf[R]
ganger[R]
message[R]
Public Class Methods
new(ganger, conf, message)
click to toggle source
# File lib/flor/unit/taskers.rb, line 9 def initialize(ganger, conf, message) @ganger = ganger @conf = conf @message = message end
Protected Instance Methods
attd()
click to toggle source
# File lib/flor/unit/taskers.rb, line 24 def attd; @message['attd']; end
attl()
click to toggle source
# File lib/flor/unit/taskers.rb, line 25 def attl; @message['attl']; end
derive_message(m)
click to toggle source
So that reply
may be called with “‘ reply reply(@message) reply(payload: {}) reply(ret: 123) reply(ret: 123, set: { a: 1 }, unset: [ :b ]) “`
# File lib/flor/unit/taskers.rb, line 106 def derive_message(m) exid = m['exid'] nid = m['nid'] pl = m['payload'] return m if Flor.is_exid?(exid) && Flor.is_nid?(nid) && pl.is_a?(Hash) m = Flor.to_string_keyed_hash(m) h = Flor.dup_message(@message) ks = m.keys if ks == [ 'payload' ] h['payload'] = m['payload'] elsif (ks & %w[ ret set unset ]).size > 0 pl = (h['payload'] ||= {}) pl['ret'] = m['ret'] if m.has_key?('ret') (m['set'] || {}).each { |k, v| pl[k] = v } (m['unset'] || []).each { |k| pl.delete(k.to_s) } else h['payload'] = m end h end
execution()
click to toggle source
def merge_into_payload(h)
@message['payload'].merge(h)
end alias merge_into_fields merge_into_payload def merge_into_vars(h)
@message['vars'].merge(h)
end
no for now, payload.merge(h) and vars.merge(h) do suffice
# File lib/flor/unit/taskers.rb, line 56 def execution @ganger.unit.execution(exid) end
exid()
click to toggle source
# File lib/flor/unit/taskers.rb, line 18 def exid; @message['exid']; end
nid()
click to toggle source
# File lib/flor/unit/taskers.rb, line 19 def nid; @message['nid']; end
payload()
click to toggle source
# File lib/flor/unit/taskers.rb, line 21 def payload; @message['payload']; end
Also aliased as: fields
reply(message=@message, force=false)
click to toggle source
# File lib/flor/unit/taskers.rb, line 80 def reply(message=@message, force=false) fail ArgumentError.new( "argument to reply must be a Hash but is #{message.class}" ) unless message.is_a?(Hash) @ganger.return(derive_message(message)) if force || @ganger [] # very important, return no further messages end
reply_with_error(error)
click to toggle source
# File lib/flor/unit/taskers.rb, line 91 def reply_with_error(error) reply( Flor.to_error_message(@message, error)) end
route(name)
click to toggle source
For domain taskers
# File lib/flor/unit/taskers.rb, line 63 def route(name) if name.is_a?(String) [ Flor.dup_and_merge( @message, 'tasker' => name, 'original_tasker' => @message['tasker'], 'routed' => true) ] else [ Flor.dup_and_merge( @message, 'routed' => !! name) ] end end
set_payload(h)
click to toggle source
# File lib/flor/unit/taskers.rb, line 34 def set_payload(h) fail TypeError.new("not a hash but a #{fs.class}") unless h.is_a?(Hash) @message['payload'] = h end
Also aliased as: set_fields
set_vars(h)
click to toggle source
# File lib/flor/unit/taskers.rb, line 40 def set_vars(h) fail TypeError.new("not a hash but a #{fs.class}") unless h.is_a?(Hash) @message['vars'] = h end
Also aliased as: set_variables
tasker()
click to toggle source
# File lib/flor/unit/taskers.rb, line 27 def tasker; @message['tasker']; end
taskname()
click to toggle source
# File lib/flor/unit/taskers.rb, line 28 def taskname; @message['taskname']; end
Also aliased as: task_name
vars()
click to toggle source
# File lib/flor/unit/taskers.rb, line 31 def vars; @message['vars']; end
Also aliased as: variables