module Syncromesh::SimplePoller
Public Class Methods
read(subscriber)
click to toggle source
# File lib/syncromesh.rb, line 110 def self.read(subscriber) update_store do |store| data = store[subscriber][:data] rescue [] store[subscriber] = {data: [], last_read_at: Time.now} data end end
subscribe()
click to toggle source
# File lib/syncromesh.rb, line 102 def self.subscribe subscriber = SecureRandom.hex(10) update_store do |store| store[subscriber] = {data: [], last_read_at: Time.now} end subscriber end
update_store() { |data| ... }
click to toggle source
# File lib/syncromesh.rb, line 127 def self.update_store store = PStore.new('syncromesh-simple-poller-store') store.transaction do data = store[:data] || {} data.delete_if do |subscriber, subscriber_store| subscriber_store[:last_read_at] < Time.now-Syncromesh.seconds_polled_data_will_be_retained end result = yield data store[:data] = data result end end
write(event, data)
click to toggle source
# File lib/syncromesh.rb, line 118 def self.write(event, data) update_store do |store| store.each do |subscriber, subscriber_store| subscriber_store[:data] << [event, data] end end end