Class: Logger::HTTP::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/logger-http/base.rb

Instance Method Summary collapse

Constructor Details

#initialize(base_uri, path, request_source, debug: false) ⇒ Base

Returns a new instance of Base.



2
3
4
5
6
7
8
9
# File 'lib/logger-http/base.rb', line 2

def initialize(base_uri, path, request_source, debug: false)
  @base_uri = URI.parse(base_uri)
  @path = path
  @debug_logger = Logger.new('log/logger-http.log') if debug
  @request_source = request_source
  @queue = Queue.new
  dbg "initialized"
end

Instance Method Details

#closeObject



54
55
56
57
58
59
# File 'lib/logger-http/base.rb', line 54

def close
  stop
  connection && connection.finish
rescue StandardError => e
  dbg "#{self.class} - #{e.class} - #{e.message}"
end

#dbg(message) ⇒ Object



27
28
29
# File 'lib/logger-http/base.rb', line 27

def dbg message
  @debug_logger && @debug_logger.debug(message)
end

#request(data) ⇒ Object



61
62
63
64
# File 'lib/logger-http/base.rb', line 61

def request data
  put = @request_source.new(@path, data)
  connection.request @base_uri + @path, put
end

#runObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/logger-http/base.rb', line 31

def run
  dbg "running loop"

  loop do
    data = @queue.pop
    dbg "popped #{data}"

    unless data
      dbg "no data!"
      sleep 3
      next
    end

    dbg "Sending message"
    request(data)
  end

rescue StandardError
  dbg("Got exception in run loop - #{ $! }")
  @connection = nil
  raise
end

#startObject



21
22
23
24
25
# File 'lib/logger-http/base.rb', line 21

def start
  @thread ||= Thread.new { run }
  @thread = Thread.new { run } unless @thread.alive?
  dbg "thread is #{@thread.status}"
end

#write(message) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/logger-http/base.rb', line 11

def write(message)
  dbg "queueing message"
  start

  @queue << "#{message}\n"
rescue StandardError => e
  dbg "#{self.class} - #{e.class} - #{e.message}"
  close
end