class Grenache::GrapeMessage

Store a single request information

Attributes

_ts[RW]
opts[RW]
payload[RW]
type[RW]

Public Class Methods

new(type, payload, opts={}, &block) click to toggle source
# File lib/grenache/grape_message.rb, line 7
def initialize(type, payload, opts={}, &block)
  @payload = payload
  @type = type
  @opts = opts
  @rid = opts[:rid]  if opts[:rid]
  @_ts = Time.now
  @block = block
end
parse(json) click to toggle source
# File lib/grenache/grape_message.rb, line 16
def self.parse(json)
  rid,type,payload = Oj.load(json)
  if payload.nil?
    payload = type
    type = 'res'
  end
  new(type,payload, {rid:rid})
end
req(type,payload) click to toggle source
# File lib/grenache/grape_message.rb, line 25
def self.req(type,payload)
  new(type,payload)
end
response_to(req,payload) click to toggle source
# File lib/grenache/grape_message.rb, line 29
def self.response_to(req,payload)
  new('res',payload,{rid: req.rid})
end

Public Instance Methods

block_given?() click to toggle source
# File lib/grenache/grape_message.rb, line 41
def block_given?
  !!@block
end
dump_payload() click to toggle source
# File lib/grenache/grape_message.rb, line 57
def dump_payload
  @dump_payload ||= Oj.dump(payload)
end
qhash() click to toggle source
# File lib/grenache/grape_message.rb, line 53
def qhash
  "#{type}#{dump_payload}"
end
request?() click to toggle source
# File lib/grenache/grape_message.rb, line 33
def request?
  @type != 'res'
end
response?() click to toggle source
# File lib/grenache/grape_message.rb, line 37
def response?
  @type == 'res'
end
rid() click to toggle source
# File lib/grenache/grape_message.rb, line 49
def rid
  @rid ||= SecureRandom.uuid
end
to_json() click to toggle source
# File lib/grenache/grape_message.rb, line 61
def to_json
  if response?
    Oj.dump([rid,payload])
  else
    Oj.dump([rid,type,payload])
  end
end
yield(params={}) click to toggle source
# File lib/grenache/grape_message.rb, line 45
def yield(params={})
  @block.call(params)
end