Sha256: b37602c6d862ed6bd6c2f1fceac8fb4d0ce9d6e34d97714be6c427ec2cf4e3d8

Contents?: true

Size: 848 Bytes

Versions: 15

Compression:

Stored size: 848 Bytes

Contents

module LogStashLogger
  module Device
    class Connectable < Base
      def write(message)
        with_connection do
          super
        end
      end

      def flush
        return unless connected?
        with_connection do
          super
        end
      end

      def to_io
        with_connection do
          @io
        end
      end

      def connected?
        !!@io
      end

      protected

      # Implemented by subclasses
      def connect
        fail NotImplementedError
      end

      def reconnect
        @io = nil
        connect
      end

      # Ensure the block is executed with a valid connection
      def with_connection(&block)
        connect unless @io
        yield
      rescue => e
        warn "#{self.class} - #{e.class} - #{e.message}"
        close
        @io = nil
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
logstash-logger-0.14.1 lib/logstash-logger/device/connectable.rb
logstash-logger-0.14.0 lib/logstash-logger/device/connectable.rb
logstash-logger-0.13.0 lib/logstash-logger/device/connectable.rb
logstash-logger-0.12.0 lib/logstash-logger/device/connectable.rb
logstash-logger-0.11.0 lib/logstash-logger/device/connectable.rb
logstash-logger-0.10.3 lib/logstash-logger/device/connectable.rb
logstash-logger-0.10.2 lib/logstash-logger/device/connectable.rb
logstash-logger-0.10.1 lib/logstash-logger/device/connectable.rb
logstash-logger-0.10.0 lib/logstash-logger/device/connectable.rb
logstash-logger-0.9.0 lib/logstash-logger/device/connectable.rb
logstash-logger-0.8.0 lib/logstash-logger/device/connectable.rb
logstash-logger-0.7.0 lib/logstash-logger/device/connectable.rb
logstash-logger-0.6.2 lib/logstash-logger/device/connectable.rb
logstash-logger-0.6.1 lib/logstash-logger/device/connectable.rb
logstash-logger-0.6.0 lib/logstash-logger/device/connectable.rb