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
fields()
Alias for: payload
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_fields(h)
Alias for: set_payload
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_variables(h)
Alias for: set_vars
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
task_name()
Alias for: taskname
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
variables()
Alias for: vars
vars() click to toggle source
# File lib/flor/unit/taskers.rb, line 31
def vars; @message['vars']; end
Also aliased as: variables