lib/ftpd/server.rb in ftpd-0.0.1.pre vs lib/ftpd/server.rb in ftpd-0.1.0

- old
+ new

@@ -1,31 +1,34 @@ -require 'socket' - module Ftpd class Server + include Memoizer + + attr_accessor :interface + attr_accessor :port + def initialize - @server_socket = make_server_socket - @server_thread = make_server_thread + @interface = 'localhost' + @port = 0 end - def port + def bound_port @server_socket.addr[1] end - def close - # An apparent race condition causes this to sometimes not stop the - # thread. When this happens, the thread remains blocked in the - # accept method; I hypothesize that this happens whenever the - # close happens first. Once this bug is fixed, join on the - # thread. + def start + @server_socket = make_server_socket + @server_thread = make_server_thread + end + + def stop @server_socket.close end private def make_server_socket - return TCPServer.new('localhost', 0) + return TCPServer.new(@interface, @port) end def make_server_thread Thread.new do Thread.abort_on_exception = true