class NSCA::Server
Attributes
iv_key[R]
packet_version[R]
password[R]
server[R]
xor_iv_key[R]
xor_password[R]
Public Class Methods
new(*args)
click to toggle source
# File lib/nsca/server.rb, line 6 def initialize *args opts = {} opts = args.pop.dup if args.last.is_a? Hash opts[:host] ||= opts[:hostname] opts[:serv] ||= opts[:server] opts[:pass] ||= opts[:password] case args[0] when Integer opts[:port] = args[0] opts[:host] ||= args[1] when IO opts[:serv] = args[0] end @packet_version = opts[:packet_version] || PacketV3 @iv_key = (opts[:iv_key] || SecureRandom.random_bytes( 128)).to_s raise ArgumentError, "Key must be 128 bytes long" unless 128 == @iv_key.length @password = opts[:pass].to_s @server = if opts[:serv].is_a?( TCPServer) or opts[:serv].is_a?( UNIXServer) opts[:serv] elsif opts[:port].is_a? Integer TCPServer.new *[opts[:host], opts[:port]].compact else raise ArgumentError, "Server or port-number expected" end end
Public Instance Methods
accept()
click to toggle source
# File lib/nsca/server.rb, line 34 def accept() Connection.new @server.accept, self end
close()
click to toggle source
# File lib/nsca/server.rb, line 35 def close() @server.close end
each() { |conn| ... }
click to toggle source
# File lib/nsca/server.rb, line 37 def each &block return Enumerator.new( self) unless block_given? while conn = accept yield conn end end