class Drydock::StreamMonitor

Constants

CONTAINER_EVENTS
IMAGE_EVENTS

Public Class Methods

event_type_for(type) click to toggle source
# File lib/drydock/stream_monitor.rb, line 25
def self.event_type_for(type)
  case type.to_sym
  when *CONTAINER_EVENTS
    :container
  when *IMAGE_EVENTS
    :image
  else
    :object
  end
end
new(event_handler) click to toggle source
# File lib/drydock/stream_monitor.rb, line 36
def initialize(event_handler)
  @thread = Thread.new do
    previous_ids = {}
    serial_no    = 0

    Docker::Event.stream do |event|
      serial_no += 1

      is_old = previous_ids.key?(event.id)
      event_type = self.class.event_type_for(event.status)
      event_handler.call(event, !is_old, serial_no, event_type)

      previous_ids[event.id] = true
    end
  end
end