class Deepstream::RecordHandler

Public Class Methods

new(client) click to toggle source
# File lib/deepstream/record_handler.rb, line 8
def initialize(client)
  @client = client
  @records = {}
end

Public Instance Methods

delete(name) click to toggle source
# File lib/deepstream/record_handler.rb, line 58
def delete(name)
  @client.send_message(TOPIC::RECORD, ACTION::DELETE, name) if @records.delete(name)
end
discard(name) click to toggle source
# File lib/deepstream/record_handler.rb, line 54
def discard(name)
  unsubscribe(name)
end
get(name, list: nil) click to toggle source
# File lib/deepstream/record_handler.rb, line 30
def get(name, list: nil)
  name = name.dup.to_s
  if list
    name.prepend("#{list}/")
    @records[list] ||= List.new(@client, list)
    sleep 0.1 while @records[list].version.nil?
    @records[list].add(name)
  end
  @records[name] ||= Record.new(@client, name)
end
Also aliased as: get_record
get_list(name) click to toggle source
# File lib/deepstream/record_handler.rb, line 42
def get_list(name)
  @records[name] ||= List.new(@client, name)
end
get_record(name, list: nil)
Alias for: get
on_message(message) click to toggle source
# File lib/deepstream/record_handler.rb, line 20
def on_message(message)
  case message.action
  when ACTION::ACK then nil
  when ACTION::PATCH then patch(message)
  when ACTION::READ then read(message)
  when ACTION::UPDATE then update(message)
  else raise(UnknownAction, message)
  end
end
reinitialize() click to toggle source
# File lib/deepstream/record_handler.rb, line 13
def reinitialize
  @records.map do |record|
    name, rec = record
    rec.start_reinitializing
  end
end
set(name, *args) click to toggle source
# File lib/deepstream/record_handler.rb, line 46
def set(name, *args)
  @records[name]&.set(*args)
end
unsubscribe(name) click to toggle source
# File lib/deepstream/record_handler.rb, line 50
def unsubscribe(name)
  @records[name]&.unsubscribe
end

Private Instance Methods

patch(message) click to toggle source
# File lib/deepstream/record_handler.rb, line 75
def patch(message)
  name, *data = message.data
  @records[name]&.patch(*data)
end
read(message) click to toggle source
# File lib/deepstream/record_handler.rb, line 64
def read(message)
  name, *data = message.data
  return @records[name].end_reinitializing if @records[name]&.is_reinitializing?
  @records[name]&.read(*data)
end
update(message) click to toggle source
# File lib/deepstream/record_handler.rb, line 70
def update(message)
  name, *data = message.data
  @records[name]&.update(*data)
end