From fbda583fd2b6e8ad7f9b15bebed5db67947ba9f7 Mon Sep 17 00:00:00 2001 From: Denis Knauf Date: Mon, 8 Apr 2013 20:38:11 +0200 Subject: [PATCH] more than one check per connections. --- lib/nsca/packet.rb | 1 - lib/nsca/server.rb | 18 ++++++++++++++++++ test/dummy_server.rb | 2 +- test/test_nsca.rb | 11 +++++++---- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/lib/nsca/packet.rb b/lib/nsca/packet.rb index cdbcbda..fee3dd0 100644 --- a/lib/nsca/packet.rb +++ b/lib/nsca/packet.rb @@ -109,7 +109,6 @@ module NSCA def self.parse entry, key = nil, password = nil, no_verification_checks = nil entry = NSCA::xor key, entry if key entry = NSCA::xor password, entry if password - p entry: entry ver, crc32sum, *x = entry.unpack( PACK_STRING) raise VersionCheckFailed, "Packet version 3 expected. (recv: #{ver})" \ unless no_verification_checks or 3 == ver diff --git a/lib/nsca/server.rb b/lib/nsca/server.rb index c43d9a8..64091ad 100644 --- a/lib/nsca/server.rb +++ b/lib/nsca/server.rb @@ -6,6 +6,8 @@ require 'securerandom' module NSCA class Server + include Enumerable + attr_reader :iv_key, :server, :packet_version, :password def initialize *args opts = {} @@ -38,7 +40,16 @@ module NSCA def accept() Connection.new @server.accept, self end def close() @server.close end + def each &block + return Enumerator.new( self) unless block_given? + while conn = accept + yield conn + end + end + class Connection + include Enumerable + def initialize socket, server @socket, @server = socket, server @iv_key, @password = server.iv_key, server.password @@ -52,6 +63,13 @@ module NSCA @packet_version.parse data, @iv_key, @password if data end + def each &block + return Enumerator.new( self) unless block_given? + while data = fetch + yield data + end + end + def eof?() @socket.eof? end def read() @socket.read @packet_length end def close() @socket.close end diff --git a/test/dummy_server.rb b/test/dummy_server.rb index 36eab8c..73b3f4c 100644 --- a/test/dummy_server.rb +++ b/test/dummy_server.rb @@ -8,7 +8,7 @@ module NSCA end serv = NSCA::Server.new *args sock = serv.accept - sock.fetch + sock.to_a ensure sock.close if sock serv.close if serv diff --git a/test/test_nsca.rb b/test/test_nsca.rb index 45bc214..3a9756c 100644 --- a/test/test_nsca.rb +++ b/test/test_nsca.rb @@ -19,14 +19,17 @@ class TestNSCA < Test::Unit::TestCase T0 = TestChecks::T0 T1 = TestChecks::T1 T2 = TestChecks::T2 - NSCA.destinations << NSCA::Client.new( 'localhost', 5667, password: 'abcdefghijkl') - NSCA.send TestChecks::T0.new( 1, "0123456789"*51+"AB") - return + checks = [] + checks << TestChecks::T0.new( 1, "0123456789"*51+"AB") + pd1 = PD1.new 3 pd2 = PD2.new 0.9996 pd3 = PD3.new 2 - NSCA.send TestChecks::T1.new( nil, "Should be OK", [pd1, pd2, pd3]) + checks << TestChecks::T1.new( nil, "Should be OK", [pd1, pd2, pd3]) + + NSCA::destinations << NSCA::Client.new( 'localhost', 5667, password: 'abcdefghijkl') + NSCA::send *checks end end end