class SleepRoom::Record::WriteStatus

Attributes

queue[RW]

Public Class Methods

new() click to toggle source
# File lib/sleeproom/record/write_status.rb, line 8
def initialize
  @queue = Async::Queue.new
end

Public Instance Methods

add(status) click to toggle source
# File lib/sleeproom/record/write_status.rb, line 29
def add(status)
  Async do
    @queue.enqueue(status)
  end
end
run() click to toggle source
# File lib/sleeproom/record/write_status.rb, line 12
def run
  Async do
    while status = @queue.dequeue
      status[:update] = Time.now
      old_status = SleepRoom.load_config(:status)
      room = status[:room]
      if old_status.find { |h| h[:room] == room }
        new_status = old_status.delete_if { |h| h[:room] == room }
        new_status.push(status)
      else
        new_status = old_status.push(status)
      end
      SleepRoom.write_config_file(:status, new_status)
    end
  end
end