Sha256: 47521c36cfc3a0a1e8d35fc6cef7a69e20fc53e64fd5e5ab8f3bae5cae6ac190

Contents?: true

Size: 713 Bytes

Versions: 14

Compression:

Stored size: 713 Bytes

Contents

module RemoteSyslog
  class UdpEndpoint
    def initialize(address, port)
      @address = address
      @port    = port.to_i
      @socket  = EventMachine.open_datagram_socket('0.0.0.0', 0)

      # Try to resolve the address
      resolve_address

      # Every 60 seconds we'll see if the address has changed
      EventMachine.add_periodic_timer(60) do
        resolve_address
      end
    end

    def resolve_address
      request = EventMachine::DnsResolver.resolve(@address)
      request.callback do |addrs|
        @cached_ip = addrs.first
      end
    end

    def address
      @cached_ip || @address
    end

    def write(value)
      @socket.send_datagram(value, address, @port)
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
remote_syslog-1.6.5 lib/remote_syslog/udp_endpoint.rb
remote_syslog-1.6.4.1 lib/remote_syslog/udp_endpoint.rb
remote_syslog-1.6.4 lib/remote_syslog/udp_endpoint.rb
remote_syslog-1.6.3 lib/remote_syslog/udp_endpoint.rb
remote_syslog-1.6.2 lib/remote_syslog/udp_endpoint.rb
remote_syslog-1.6.1 lib/remote_syslog/udp_endpoint.rb
remote_syslog-1.6.0 lib/remote_syslog/udp_endpoint.rb
remote_syslog-1.5.1 lib/remote_syslog/udp_endpoint.rb
remote_syslog-1.5.0 lib/remote_syslog/udp_endpoint.rb
remote_syslog-1.4.2 lib/remote_syslog/udp_endpoint.rb
remote_syslog-1.4.1 lib/remote_syslog/udp_endpoint.rb
remote_syslog-1.4.0 lib/remote_syslog/udp_endpoint.rb
remote_syslog-1.3.1 lib/remote_syslog/udp_endpoint.rb
remote_syslog-1.3.0 lib/remote_syslog/udp_endpoint.rb