Extracted the simulator server services out into an implementable
interface so that we can replace the server with a more sophisticated one when running the simulator. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@938 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: SimulatorApp.java,v 1.2 2002/01/16 02:59:08 mdb Exp $
|
// $Id: SimulatorApp.java,v 1.3 2002/02/05 22:12:42 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.micasa.simulator.client;
|
package com.threerings.micasa.simulator.client;
|
||||||
|
|
||||||
@@ -15,6 +15,7 @@ import com.threerings.presents.net.UsernamePasswordCreds;
|
|||||||
|
|
||||||
import com.threerings.micasa.Log;
|
import com.threerings.micasa.Log;
|
||||||
import com.threerings.micasa.simulator.data.SimulatorInfo;
|
import com.threerings.micasa.simulator.data.SimulatorInfo;
|
||||||
|
import com.threerings.micasa.simulator.server.SimpleServer;
|
||||||
import com.threerings.micasa.simulator.server.SimulatorServer;
|
import com.threerings.micasa.simulator.server.SimulatorServer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -26,7 +27,7 @@ public class SimulatorApp
|
|||||||
public void init (String[] args) throws Exception
|
public void init (String[] args) throws Exception
|
||||||
{
|
{
|
||||||
// create the server
|
// create the server
|
||||||
SimulatorServer server = new SimulatorServer();
|
SimulatorServer server = createSimulatorServer();
|
||||||
server.init();
|
server.init();
|
||||||
_serverThread = new ServerThread(server);
|
_serverThread = new ServerThread(server);
|
||||||
|
|
||||||
@@ -49,6 +50,11 @@ public class SimulatorApp
|
|||||||
_frame.setController(ctrl);
|
_frame.setController(ctrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected SimulatorServer createSimulatorServer ()
|
||||||
|
{
|
||||||
|
return new SimpleServer();
|
||||||
|
}
|
||||||
|
|
||||||
protected SimulatorFrame createSimulatorFrame ()
|
protected SimulatorFrame createSimulatorFrame ()
|
||||||
{
|
{
|
||||||
return new SimpleFrame();
|
return new SimpleFrame();
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
//
|
||||||
|
// $Id: SimpleServer.java,v 1.1 2002/02/05 22:12:42 mdb Exp $
|
||||||
|
|
||||||
|
package com.threerings.micasa.simulator.server;
|
||||||
|
|
||||||
|
import com.threerings.crowd.data.BodyObject;
|
||||||
|
import com.threerings.crowd.server.CrowdServer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A simple simulator server implementation that extends the crowd server
|
||||||
|
* and provides no special functionality.
|
||||||
|
*/
|
||||||
|
public class SimpleServer extends CrowdServer
|
||||||
|
implements SimulatorServer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Called by the simulator manager to map a username to a particular
|
||||||
|
* body object. This should only be called from the dobjmgr thread.
|
||||||
|
*
|
||||||
|
* <p> This is copied from {@link CrowdServer#mapBody} as that
|
||||||
|
* implementation is protected and cannot be referenced by classes in
|
||||||
|
* the simulator package, but we know what we're doing and so we
|
||||||
|
* knowingly expose this functionality to other classes in our
|
||||||
|
* package.
|
||||||
|
*/
|
||||||
|
public void fakeBodyMapping (String username, BodyObject bodobj)
|
||||||
|
{
|
||||||
|
_bodymap.put(username, bodobj);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: SimulatorManager.java,v 1.5 2002/02/05 20:27:07 mdb Exp $
|
// $Id: SimulatorManager.java,v 1.6 2002/02/05 22:12:42 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.micasa.simulator.server;
|
package com.threerings.micasa.simulator.server;
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ public class SimulatorManager
|
|||||||
*/
|
*/
|
||||||
public void init (Config config, InvocationManager invmgr,
|
public void init (Config config, InvocationManager invmgr,
|
||||||
PlaceRegistry plreg, ClientManager clmgr,
|
PlaceRegistry plreg, ClientManager clmgr,
|
||||||
RootDObjectManager omgr)
|
RootDObjectManager omgr, SimulatorServer simserv)
|
||||||
{
|
{
|
||||||
// register our simulator provider
|
// register our simulator provider
|
||||||
SimulatorProvider sprov = new SimulatorProvider(this);
|
SimulatorProvider sprov = new SimulatorProvider(this);
|
||||||
@@ -59,6 +59,7 @@ public class SimulatorManager
|
|||||||
_plreg = plreg;
|
_plreg = plreg;
|
||||||
_clmgr = clmgr;
|
_clmgr = clmgr;
|
||||||
_omgr = omgr;
|
_omgr = omgr;
|
||||||
|
_simserv = simserv;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -125,7 +126,7 @@ public class SimulatorManager
|
|||||||
bobj.username = "simulant" + (_sims.size() + 1);
|
bobj.username = "simulant" + (_sims.size() + 1);
|
||||||
|
|
||||||
// map the simulant into the server body set
|
// map the simulant into the server body set
|
||||||
SimulatorServer.mapBody(bobj.username, bobj);
|
_simserv.fakeBodyMapping(bobj.username, bobj);
|
||||||
|
|
||||||
// hold onto it for later game creation
|
// hold onto it for later game creation
|
||||||
_sims.add(bobj);
|
_sims.add(bobj);
|
||||||
@@ -171,7 +172,7 @@ public class SimulatorManager
|
|||||||
|
|
||||||
// give the simulant its body
|
// give the simulant its body
|
||||||
BodyObject bobj = (BodyObject)_sims.get(ii - 1);
|
BodyObject bobj = (BodyObject)_sims.get(ii - 1);
|
||||||
sim.init(bobj, _config);
|
sim.init(bobj, _config, _omgr);
|
||||||
|
|
||||||
// give the simulant a chance to engage in place antics
|
// give the simulant a chance to engage in place antics
|
||||||
sim.willEnterPlace(_gobj);
|
sim.willEnterPlace(_gobj);
|
||||||
@@ -214,4 +215,5 @@ public class SimulatorManager
|
|||||||
protected PlaceRegistry _plreg;
|
protected PlaceRegistry _plreg;
|
||||||
protected ClientManager _clmgr;
|
protected ClientManager _clmgr;
|
||||||
protected RootDObjectManager _omgr;
|
protected RootDObjectManager _omgr;
|
||||||
|
protected SimulatorServer _simserv;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,61 +1,34 @@
|
|||||||
//
|
//
|
||||||
// $Id: SimulatorServer.java,v 1.4 2002/02/05 20:27:07 mdb Exp $
|
// $Id: SimulatorServer.java,v 1.5 2002/02/05 22:12:42 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.micasa.simulator.server;
|
package com.threerings.micasa.simulator.server;
|
||||||
|
|
||||||
import com.threerings.crowd.data.BodyObject;
|
import com.threerings.crowd.data.BodyObject;
|
||||||
import com.threerings.crowd.server.CrowdServer;
|
|
||||||
|
|
||||||
import com.threerings.micasa.Log;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is the main entry point and general organizer of everything
|
* The simulator manager needs a mechanism for faking body object
|
||||||
* that goes on in the Simulator game server process.
|
* registrations, which is provided by implementations of this interface.
|
||||||
*/
|
*/
|
||||||
public class SimulatorServer extends CrowdServer
|
public interface SimulatorServer
|
||||||
{
|
{
|
||||||
/** The simulator manager in operation on this server. */
|
/**
|
||||||
public static SimulatorManager simmgr = new SimulatorManager();
|
* Called to initialize this server instance.
|
||||||
|
*
|
||||||
|
* @exception Exception thrown if anything goes wrong initializing the
|
||||||
|
* server.
|
||||||
|
*/
|
||||||
|
public void init () throws Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes all of the server services and prepares for operation.
|
* Called to perform the main body of server processing. This is
|
||||||
|
* called from the server thread and should do the simulator server's
|
||||||
|
* primary business.
|
||||||
*/
|
*/
|
||||||
public void init ()
|
public void run ();
|
||||||
throws Exception
|
|
||||||
{
|
|
||||||
// do the base server initialization
|
|
||||||
super.init();
|
|
||||||
|
|
||||||
// initialize the manager
|
|
||||||
simmgr.init(config, invmgr, plreg, clmgr, omgr);
|
|
||||||
|
|
||||||
Log.info("Simulator server initialized.");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called by the simulator manager to map a username to a particular
|
* Called by the simulator manager to map a username to a particular
|
||||||
* body object. This should only be called from the dobjmgr thread.
|
* body object. This should only be called from the dobjmgr thread.
|
||||||
*
|
|
||||||
* <p> This is copied from {@link CrowdServer#mapBody} as that
|
|
||||||
* implementation is protected and cannot be referenced by classes in
|
|
||||||
* the simulator package, but we know what we're doing and so we
|
|
||||||
* knowingly expose this functionality to other classes in our
|
|
||||||
* package.
|
|
||||||
*/
|
*/
|
||||||
protected static void mapBody (String username, BodyObject bodobj)
|
public void fakeBodyMapping (String username, BodyObject bodobj);
|
||||||
{
|
|
||||||
_bodymap.put(username, bodobj);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main (String[] args)
|
|
||||||
{
|
|
||||||
SimulatorServer server = new SimulatorServer();
|
|
||||||
try {
|
|
||||||
server.init();
|
|
||||||
server.run();
|
|
||||||
} catch (Exception e) {
|
|
||||||
Log.warning("Unable to initialize server.");
|
|
||||||
Log.logStackTrace(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user