Module: Syncromesh::SimplePoller
- Defined in:
- lib/syncromesh.rb
Class Method Summary collapse
Class Method Details
.read(subscriber) ⇒ Object
110 111 112 113 114 115 116 |
# 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 ⇒ Object
102 103 104 105 106 107 108 |
# 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 ⇒ Object
127 128 129 130 131 132 133 134 135 136 137 138 |
# 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) ⇒ Object
118 119 120 121 122 123 124 125 |
# 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 |