class Finist

Constants

SCRIPT

Public Class Methods

new(redis, name, init) click to toggle source
# File lib/finist.rb, line 18
def initialize(redis, name, init)
  @name = sprintf("finist:%s", name)
  @redis = redis
  @redis.call("SET", @name, init, "NX")
end

Public Instance Methods

event_key(ev) click to toggle source
# File lib/finist.rb, line 24
def event_key(ev)
  sprintf("%s:%s", @name, ev)
end
on(ev, curr_state, next_state) click to toggle source
# File lib/finist.rb, line 28
def on(ev, curr_state, next_state)
  @redis.call("HSET", event_key(ev), curr_state, next_state)
end
rm(ev) click to toggle source
# File lib/finist.rb, line 32
def rm(ev)
  @redis.call("DEL", event_key(ev))
end
send_event(ev) click to toggle source
# File lib/finist.rb, line 40
def send_event(ev)
  @redis.call("EVAL", SCRIPT, "2", @name, event_key(ev))
end
state() click to toggle source
# File lib/finist.rb, line 36
def state
  @redis.call("GET", @name)
end
trigger(ev) click to toggle source
# File lib/finist.rb, line 44
def trigger(ev)
  result = send_event(ev)
  return result[0], result[1] != nil
end