Class: NSCA::Server::Connection
- Inherits:
-
Object
- Object
- NSCA::Server::Connection
- Includes:
- Enumerable
- Defined in:
- lib/nsca/server.rb
Instance Method Summary collapse
- #close ⇒ Object
- #each(&block) ⇒ Object
- #eof? ⇒ Boolean
- #fetch ⇒ Object
-
#initialize(socket, server) ⇒ Connection
constructor
A new instance of Connection.
- #read(len = nil) ⇒ Object
Constructor Details
#initialize(socket, server) ⇒ Connection
Returns a new instance of Connection.
47 48 49 50 51 52 53 54 55 |
# 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 |
Instance Method Details
#close ⇒ Object
83 |
# File 'lib/nsca/server.rb', line 83 def close() @socket.close end |
#each(&block) ⇒ Object
76 77 78 79 |
# File 'lib/nsca/server.rb', line 76 def each &block return Enumerator.new( self) unless block_given? yield fetch until eof? end |
#eof? ⇒ Boolean
81 |
# File 'lib/nsca/server.rb', line 81 def eof?() @socket.eof? end |
#fetch ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# 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) ⇒ Object
82 |
# File 'lib/nsca/server.rb', line 82 def read( len = nil) @socket.read( len || @packet_length) end |