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