Class: Relax::EventListener

Inherits:
Base
  • Object
show all
Defined in:
lib/relax/event_listener.rb

Constant Summary collapse

DEFAULT_LOG_LEVEL =
'info'
@@callback =
nil
@@logger =
nil

Class Method Summary collapse

Methods inherited from Base

redis

Class Method Details

.callbackObject



36
37
38
# File 'lib/relax/event_listener.rb', line 36

def self.callback
  @@callback
end

.callback=(cb) ⇒ Object



32
33
34
# File 'lib/relax/event_listener.rb', line 32

def self.callback=(cb)
  @@callback = cb
end

.listen!Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/relax/event_listener.rb', line 10

def self.listen!
  if relax_events_queue.nil? || relax_events_queue == ""
    raise EventsQueueNotSetError, "Environment Variable RELAX_EVENTS_QUEUE is not set"
  end

  self.log("Listening for Relax Events...")

  while true do
    queue_name, event_json = redis.with { |c| c.blpop(relax_events_queue) }

    if queue_name == relax_events_queue
      event = Event.new(JSON.parse(event_json))
      callback.call(event) if callback
    end
  end
end

.log(text, level = DEFAULT_LOG_LEVEL) ⇒ Object



27
28
29
30
# File 'lib/relax/event_listener.rb', line 27

def self.log(text, level = DEFAULT_LOG_LEVEL)
  return if logger.nil?
  logger.send(level, "#{Time.now.strftime('%FT%T%z')}: #{text}")
end

.loggerObject



44
45
46
# File 'lib/relax/event_listener.rb', line 44

def self.logger
  @@logger
end

.logger=(logger) ⇒ Object



40
41
42
# File 'lib/relax/event_listener.rb', line 40

def self.logger=(logger)
  @@logger = logger
end

.relax_events_queueObject



48
49
50
# File 'lib/relax/event_listener.rb', line 48

def self.relax_events_queue
  ENV['RELAX_EVENTS_QUEUE']
end