Class: Vayacondios::Client::ItemSetListener

Inherits:
Object
  • Object
show all
Defined in:
lib/vayacondios/client/itemset.rb

Overview

Subclasses should implement the remove_items(arr) and add_items(arr) methods, both of which will be called with arrays when the items in an itemset change. The run method polls the provided itemset at a specified interval and calls these methods appropriately.

Constant Summary collapse

POLL_WAIT_SEC =
2

Instance Method Summary collapse

Constructor Details

#initialize(itemset, poll_wait_sec = POLL_WAIT_SEC) ⇒ ItemSetListener

Returns a new instance of ItemSetListener.



91
92
93
94
95
# File 'lib/vayacondios/client/itemset.rb', line 91

def initialize itemset, poll_wait_sec = POLL_WAIT_SEC
  @itemset = itemset
  @items = []
  @poll_wait_sec = poll_wait_sec
end

Instance Method Details

#runObject



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/vayacondios/client/itemset.rb', line 97

def run
  setup
  loop do
    new_items = @itemset.fetch || []

    Log.debug "currently configured: #{@items.inspect}"
    Log.debug "new items: #{new_items.inspect}"

    add_items(new_items - @items)
    remove_items(@items - new_items)

    @items = new_items

    sleep @poll_wait_sec
  end
  teardown
end