lib/dat-tcp/server_spy.rb in dat-tcp-0.7.0 vs lib/dat-tcp/server_spy.rb in dat-tcp-0.8.0
- old
+ new
@@ -1,47 +1,51 @@
-require 'dat-tcp/logger'
+require 'dat-tcp'
+require 'dat-tcp/worker'
module DatTCP
class ServerSpy
+ attr_reader :worker_class
+ attr_reader :options, :backlog_size, :shutdown_timeout
+ attr_reader :num_workers, :logger, :worker_params
attr_reader :ip, :port, :file_descriptor
attr_reader :client_file_descriptors
- attr_reader :logger
- attr_reader :worker_start_procs, :worker_shutdown_procs
- attr_reader :worker_sleep_procs, :worker_wakeup_procs
attr_reader :waiting_for_pause, :waiting_for_stop, :waiting_for_halt
attr_accessor :listen_called, :start_called
attr_accessor :stop_listen_called, :pause_called
attr_accessor :stop_called, :halt_called
- attr_accessor :serve_proc
+ def initialize(worker_class, options = nil)
+ @worker_class = worker_class
+ if !@worker_class.kind_of?(Class) || !@worker_class.include?(DatTCP::Worker)
+ raise ArgumentError, "worker class must include `#{DatTCP::Worker}`"
+ end
- def initialize
- @ip = nil
- @port = nil
- @file_descriptor = nil
+ server_ns = DatTCP::Server
+ @options = options || {}
+ @backlog_size = @options[:backlog_size] || server_ns::DEFAULT_BACKLOG_SIZE
+ @shutdown_timeout = @options[:shutdown_timeout] || server_ns::DEFAULT_SHUTDOWN_TIMEOUT
+ @num_workers = (@options[:num_workers] || server_ns::DEFAULT_NUM_WORKERS).to_i
+ @logger = @options[:logger]
+ @worker_params = @options[:worker_params]
+
+ @ip = nil
+ @port = nil
+ @file_descriptor = nil
@client_file_descriptors = []
- @logger = DatTCP::Logger::Null.new
- @worker_start_procs = []
- @worker_shutdown_procs = []
- @worker_sleep_procs = []
- @worker_wakeup_procs = []
-
@waiting_for_pause = nil
- @waiting_for_stop = nil
- @waiting_for_halt = nil
+ @waiting_for_stop = nil
+ @waiting_for_halt = nil
- @listen_called = false
+ @listen_called = false
@stop_listen_called = false
- @start_called = false
- @pause_called = false
- @stop_called = false
- @halt_called = false
-
- @serve_proc = proc{ }
+ @start_called = false
+ @pause_called = false
+ @stop_called = false
+ @halt_called = false
end
def listening?
@listen_called && !@stop_listen_called
end
@@ -62,12 +66,12 @@
def stop_listen
@stop_listen_called = true
end
- def start(client_file_descriptors = nil)
- @client_file_descriptors = client_file_descriptors || []
+ def start(passed_client_fds = nil)
+ @client_file_descriptors = passed_client_fds || []
@start_called = true
end
def pause(wait = false)
@waiting_for_pause = wait
@@ -81,14 +85,9 @@
def halt(wait = false)
@waiting_for_halt = wait
@halt_called = true
end
-
- def on_worker_start(&block); @worker_start_procs << block; end
- def on_worker_shutdown(&block); @worker_shutdown_procs << block; end
- def on_worker_sleep(&block); @worker_sleep_procs << block; end
- def on_worker_wakeup(&block); @worker_wakeup_procs << block; end
end
end