Sha256: a0c94b1c01f86da43b07bdca5e07f5e4e83b32f9b11b3264511a3bea261cdc14

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

module Riemann
  class Client
    class UDP < Client
      MAX_SIZE = 16_384

      attr_accessor :host, :port, :max_size

      def initialize(opts = {}) # rubocop:disable Lint/MissingSuper
        @host     = opts[:host] || HOST
        @port     = opts[:port] || PORT
        @max_size = opts[:max_size] || MAX_SIZE
        @socket   = nil
      end

      def socket
        return @socket if connected?

        @socket = UDPSocket.new
      end

      def close
        @socket.close if connected?
        @socket = nil
      end

      def connected?
        @socket && !@socket.closed?
      end

      # Read a message from a stream
      def read_message(_socket)
        raise Unsupported
      end

      def send_recv(_message)
        raise Unsupported
      end

      def send_maybe_recv(message)
        encoded_string = message.encode.to_s
        raise TooBig unless encoded_string.length < @max_size

        socket.send(encoded_string, 0, @host, @port)
        nil
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
riemann-client-1.2.1 lib/riemann/client/udp.rb
riemann-client-1.2.0 lib/riemann/client/udp.rb