Sha256: bccfefa67cf0c13ff11beddf1d5c7db20a5799224ca4f6f7d24c7fbe933a9b16

Contents?: true

Size: 882 Bytes

Versions: 21

Compression:

Stored size: 882 Bytes

Contents

module LogStashLogger
  module Device
    class Balancer < Base
      attr_reader :devices

      def initialize(opts)
        @io = self
        @devices = create_devices(opts[:outputs])
        self.class.delegate_to_all(:close, :close!, :flush)
        self.class.delegate_to_one(:write)
      end

      private

      def create_devices(opts)
        opts.map { |device_opts| Device.new(device_opts) }
      end

      def self.delegate_to_all(*methods)
        methods.each do |m|
          define_method(m) do |*args|
            devices.each { |device| device.send(m, *args) }
          end
        end
      end

      def self.delegate_to_one(*methods)
        methods.each do |m|
          define_method(m) do |*args|
            select_device.send(m, *args)
          end
        end
      end

      def select_device
        devices.sample
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 3 rubygems

Version Path
logstash-logger-p-0.26.1 lib/logstash-logger/device/balancer.rb
logstash-logger-yajl-0.27.0 lib/logstash-logger/device/balancer.rb
logstash-logger-0.26.1 lib/logstash-logger/device/balancer.rb
logstash-logger-0.26.0 lib/logstash-logger/device/balancer.rb
logstash-logger-0.25.1 lib/logstash-logger/device/balancer.rb
logstash-logger-0.25.0 lib/logstash-logger/device/balancer.rb
logstash-logger-0.24.1 lib/logstash-logger/device/balancer.rb
logstash-logger-0.24.0 lib/logstash-logger/device/balancer.rb
logstash-logger-0.23.0 lib/logstash-logger/device/balancer.rb
logstash-logger-0.22.1 lib/logstash-logger/device/balancer.rb
logstash-logger-0.22.0 lib/logstash-logger/device/balancer.rb
logstash-logger-0.21.0 lib/logstash-logger/device/balancer.rb
logstash-logger-0.20.1 lib/logstash-logger/device/balancer.rb
logstash-logger-0.20.0 lib/logstash-logger/device/balancer.rb
logstash-logger-0.19.2 lib/logstash-logger/device/balancer.rb
logstash-logger-0.19.1 lib/logstash-logger/device/balancer.rb
logstash-logger-0.19.0 lib/logstash-logger/device/balancer.rb
logstash-logger-0.18.1 lib/logstash-logger/device/balancer.rb
logstash-logger-0.18.0 lib/logstash-logger/device/balancer.rb
logstash-logger-0.17.0 lib/logstash-logger/device/balancer.rb