class NSCA::Server::Connection
Public Class Methods
new(socket, server)
click to toggle source
# File lib/nsca/server.rb, line 47 def initialize socket, server @socket, @server = socket, server @iv_key, @password = server.iv_key, server.password @packet_version = server.packet_version @packet_length = @packet_version::PACK_LENGTH @socket.write [@iv_key, Time.now.to_i].pack( 'a* L>') @xor_password = NSCA::Helper.xor_stream @password @xor_iv_key = NSCA::Helper.xor_stream @iv_key end
Public Instance Methods
close()
click to toggle source
# File lib/nsca/server.rb, line 83 def close() @socket.close end
each() { |fetch until eof?| ... }
click to toggle source
# File lib/nsca/server.rb, line 76 def each &block return Enumerator.new( self) unless block_given? yield fetch until eof? end
eof?()
click to toggle source
# File lib/nsca/server.rb, line 81 def eof?() @socket.eof? end
fetch()
click to toggle source
# File lib/nsca/server.rb, line 57 def fetch iv_key = NSCA::Helper.xor_stream @iv_key password = NSCA::Helper.xor_stream @password packet_version = iv_key[ password[ read PacketV3::PACKET_VERSION]] v = packet_version.unpack( 's>').first case v when 3 data = packet_version + iv_key[ password[ read( PacketV3::PACK_LENGTH - PacketV3::PACKET_VERSION)]] begin return PacketV3.parse( data) rescue NSCA::Packet::CSC32CheckFailed x = read( PacketV3__2_9::PACK_LENGTH - data.length) raise if x.nil? return PacketV3__2_9.parse( data + iv_key[ password[ x]]) end else raise "Unknown Version #{v.inspect}" end end
read( len = nil)
click to toggle source
# File lib/nsca/server.rb, line 82 def read( len = nil) @socket.read( len || @packet_length) end