From 0aecdc2069f6bcd5d4ab06a89a0055ccad47cbe8 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Wed, 24 Sep 2003 18:37:55 +0000 Subject: [PATCH] Don't create our listen socket until we've actually be started up. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2809 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../server/net/ConnectionManager.java | 70 +++++++++---------- 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/src/java/com/threerings/presents/server/net/ConnectionManager.java b/src/java/com/threerings/presents/server/net/ConnectionManager.java index 6099f9919..55339e95a 100644 --- a/src/java/com/threerings/presents/server/net/ConnectionManager.java +++ b/src/java/com/threerings/presents/server/net/ConnectionManager.java @@ -1,5 +1,5 @@ // -// $Id: ConnectionManager.java,v 1.34 2003/08/20 18:54:23 mdb Exp $ +// $Id: ConnectionManager.java,v 1.35 2003/09/24 18:37:55 mdb Exp $ package com.threerings.presents.server.net; @@ -57,40 +57,6 @@ public class ConnectionManager extends LoopingThread // register as a "state of server" reporter PresentsServer.registerReporter(this); - - try { - // create our listening socket and add it to the select set - _listener = ServerSocketChannel.open(); - _listener.configureBlocking(false); - - InetSocketAddress isa = new InetSocketAddress(_port); - _listener.socket().bind(isa); - Log.info("Server listening on " + isa + "."); - - } catch (IOException ioe) { - Log.warning("Failure creating listen socket " + - "[port=" + _port + "]."); - throw ioe; - } - - // register our listening socket and map its select key to a net - // event handler that will accept new connections - SelectionKey lkey = - _listener.register(_selector, SelectionKey.OP_ACCEPT); - _handlers.put(lkey, new NetEventHandler() { - public int handleEvent (long when) { - acceptConnection(); - // there's no easy way to measure bytes read when - // accepting a connection, so we claim nothing - return 0; - } - public boolean checkIdle (long now) { - return false; // we're never idle - } - }); - - // we'll use this for sending messages to clients - _framer = new FramingOutputStream(); } /** @@ -213,7 +179,39 @@ public class ConnectionManager extends LoopingThread // documentation inherited protected void willStart () { - Log.info("Connection Manager listening [port=" + _port + "]."); + try { + // create our listening socket and add it to the select set + _listener = ServerSocketChannel.open(); + _listener.configureBlocking(false); + + InetSocketAddress isa = new InetSocketAddress(_port); + _listener.socket().bind(isa); + Log.info("Server listening on " + isa + "."); + + // register our listening socket and map its select key to a + // net event handler that will accept new connections + SelectionKey lkey = + _listener.register(_selector, SelectionKey.OP_ACCEPT); + _handlers.put(lkey, new NetEventHandler() { + public int handleEvent (long when) { + acceptConnection(); + // there's no easy way to measure bytes read when + // accepting a connection, so we claim nothing + return 0; + } + public boolean checkIdle (long now) { + return false; // we're never idle + } + }); + + } catch (IOException ioe) { + Log.warning("Failure listening to socket on port '" +_port + "'."); + Log.logStackTrace(ioe); + return; + } + + // we'll use this for sending messages to clients + _framer = new FramingOutputStream(); } /**