class LogStashLogger::Device::Connectable

Attributes

buffer_logger[RW]

Public Class Methods

new(opts = {}) click to toggle source
Calls superclass method LogStashLogger::Device::Base::new
# File lib/logstash-logger/device/connectable.rb, line 10
def initialize(opts = {})
  super

  if opts[:batch_events]
    warn "The :batch_events option is deprecated. Please use :buffer_max_items instead"
  end

  if opts[:batch_timeout]
    warn "The :batch_timeout option is deprecated. Please use :buffer_max_interval instead"
  end

  @buffer_group = nil
  @buffer_max_items = opts[:batch_events] || opts[:buffer_max_items]
  @buffer_max_interval = opts[:batch_timeout] || opts[:buffer_max_interval]
  @drop_messages_on_flush_error =
    if opts.key?(:drop_messages_on_flush_error)
      opts.delete(:drop_messages_on_flush_error)
    else
      false
    end

  @drop_messages_on_full_buffer =
    if opts.key?(:drop_messages_on_full_buffer)
      opts.delete(:drop_messages_on_full_buffer)
    else
      true
    end

  @buffer_flush_at_exit =
    if opts.key?(:buffer_flush_at_exit)
      opts.delete(:buffer_flush_at_exit)
    else
      true
    end

  @buffer_logger = opts[:buffer_logger]

  buffer_initialize(
    max_items: @buffer_max_items,
    max_interval: @buffer_max_interval,
    logger: buffer_logger,
    autoflush: @sync,
    drop_messages_on_flush_error: @drop_messages_on_flush_error,
    drop_messages_on_full_buffer: @drop_messages_on_full_buffer,
    flush_at_exit: @buffer_flush_at_exit
  )
end

Public Instance Methods

close(opts = {}) click to toggle source
Calls superclass method LogStashLogger::Device::Base#close
# File lib/logstash-logger/device/connectable.rb, line 75
def close(opts = {})
  if opts.fetch(:flush, true)
    buffer_flush(final: true)
  end

  super
end
connect() click to toggle source

Implemented by subclasses

# File lib/logstash-logger/device/connectable.rb, line 106
def connect
  fail NotImplementedError
end
connected?() click to toggle source
# File lib/logstash-logger/device/connectable.rb, line 89
def connected?
  !!@io
end
flush(*args) click to toggle source
# File lib/logstash-logger/device/connectable.rb, line 62
def flush(*args)
  if args.empty?
    buffer_flush
  else
    messages, group = *args
    write_batch(messages, group)
  end
end
on_full_buffer_receive(data) click to toggle source
# File lib/logstash-logger/device/connectable.rb, line 71
def on_full_buffer_receive(data)
  log_warning("Buffer Full - #{data}")
end
reconnect() click to toggle source
# File lib/logstash-logger/device/connectable.rb, line 115
def reconnect
  close(flush: false)
  connect
end
reset() click to toggle source
# File lib/logstash-logger/device/connectable.rb, line 110
def reset
  reset_buffer
  close(flush: false)
end
to_io() click to toggle source
Calls superclass method LogStashLogger::Device::Base#to_io
# File lib/logstash-logger/device/connectable.rb, line 83
def to_io
  with_connection do
    super
  end
end
with_connection() { || ... } click to toggle source

Ensure the block is executed with a valid connection

# File lib/logstash-logger/device/connectable.rb, line 121
def with_connection(&block)
  connect unless connected?
  yield
rescue => e
  log_error(e)
  close(flush: false)
  raise
end
write(message) click to toggle source
# File lib/logstash-logger/device/connectable.rb, line 58
def write(message)
  buffer_receive(message, @buffer_group) unless message.nil?
end
write_batch(messages, group = nil) click to toggle source
# File lib/logstash-logger/device/connectable.rb, line 99
def write_batch(messages, group = nil)
  with_connection do
    super
  end
end
write_one(message) click to toggle source
Calls superclass method LogStashLogger::Device::Base#write_one
# File lib/logstash-logger/device/connectable.rb, line 93
def write_one(message)
  with_connection do
    super
  end
end