diff --git a/src/java/com/threerings/presents/client/Client.java b/src/java/com/threerings/presents/client/Client.java index 42abce7d6..9ee5a3e63 100644 --- a/src/java/com/threerings/presents/client/Client.java +++ b/src/java/com/threerings/presents/client/Client.java @@ -1,5 +1,5 @@ // -// $Id: Client.java,v 1.8 2001/07/19 07:09:16 mdb Exp $ +// $Id: Client.java,v 1.9 2001/07/19 07:48:25 mdb Exp $ package com.threerings.cocktail.cher.client; @@ -253,6 +253,9 @@ public class Client // create our invocation manager _invmgr = new InvocationManager(this, data.invOid); + + // let the client know that logon has now fully succeeded + notifyObservers(Client.CLIENT_DID_LOGON, null); } protected Credentials _creds; diff --git a/src/java/com/threerings/presents/client/Communicator.java b/src/java/com/threerings/presents/client/Communicator.java index af2daf813..71663b5e6 100644 --- a/src/java/com/threerings/presents/client/Communicator.java +++ b/src/java/com/threerings/presents/client/Communicator.java @@ -1,5 +1,5 @@ // -// $Id: Communicator.java,v 1.9 2001/07/19 07:09:16 mdb Exp $ +// $Id: Communicator.java,v 1.10 2001/07/19 07:48:25 mdb Exp $ package com.threerings.cocktail.cher.client; @@ -163,8 +163,8 @@ public class Communicator _writer = new Writer(); _writer.start(); - // let the client know that logon succeeded - _client.notifyObservers(Client.CLIENT_DID_LOGON, null); + // wait for the bootstrap notification before we claim that we're + // actually logged on } /** @@ -365,6 +365,7 @@ public class Communicator } catch (ObjectStreamException ose) { Log.warning("Error decoding message: " + ose); + Log.logStackTrace(ose); } catch (InterruptedIOException iioe) { // somebody set up us the bomb! we've been interrupted diff --git a/src/java/com/threerings/presents/io/TypedObjectRegistry.java b/src/java/com/threerings/presents/io/TypedObjectRegistry.java index db5ca72f9..cf3db0fcb 100644 --- a/src/java/com/threerings/presents/io/TypedObjectRegistry.java +++ b/src/java/com/threerings/presents/io/TypedObjectRegistry.java @@ -1,5 +1,5 @@ // -// $Id: TypedObjectRegistry.java,v 1.1 2001/06/11 17:44:04 mdb Exp $ +// $Id: TypedObjectRegistry.java,v 1.2 2001/07/19 07:48:25 mdb Exp $ package com.threerings.cocktail.cher.io; @@ -36,6 +36,8 @@ public class TypedObjectRegistry // register our downstream message classes TypedObjectFactory.registerClass(AuthResponse.TYPE, AuthResponse.class); + TypedObjectFactory.registerClass(BootstrapNotification.TYPE, + BootstrapNotification.class); TypedObjectFactory.registerClass(EventNotification.TYPE, EventNotification.class); TypedObjectFactory.registerClass(ObjectResponse.TYPE, @@ -54,5 +56,7 @@ public class TypedObjectRegistry AttributeChangedEvent.class); TypedObjectFactory.registerClass(AttributesChangedEvent.TYPE, AttributesChangedEvent.class); + TypedObjectFactory.registerClass(MessageEvent.TYPE, + MessageEvent.class); } } diff --git a/src/java/com/threerings/presents/server/InvocationManager.java b/src/java/com/threerings/presents/server/InvocationManager.java index 15064191e..e6f93427d 100644 --- a/src/java/com/threerings/presents/server/InvocationManager.java +++ b/src/java/com/threerings/presents/server/InvocationManager.java @@ -1,5 +1,5 @@ // -// $Id: InvocationManager.java,v 1.2 2001/07/19 07:09:16 mdb Exp $ +// $Id: InvocationManager.java,v 1.3 2001/07/19 07:48:25 mdb Exp $ package com.threerings.cocktail.cher.server; @@ -80,7 +80,7 @@ public class InvocationManager return true; } - // make sure the name is proper just for sanities sake + // make sure the name is proper just for sanity's sake MessageEvent mevt = (MessageEvent)event; if (!mevt.getName().equals(InvocationObject.MESSAGE_NAME)) { return true; diff --git a/src/java/com/threerings/presents/server/PresentsClient.java b/src/java/com/threerings/presents/server/PresentsClient.java index 2314fabe0..c4edc3f01 100644 --- a/src/java/com/threerings/presents/server/PresentsClient.java +++ b/src/java/com/threerings/presents/server/PresentsClient.java @@ -1,5 +1,5 @@ // -// $Id: PresentsClient.java,v 1.6 2001/07/19 07:17:46 mdb Exp $ +// $Id: PresentsClient.java,v 1.7 2001/07/19 07:48:25 mdb Exp $ package com.threerings.cocktail.cher.server; @@ -107,6 +107,8 @@ public class Client implements Subscriber, MessageHandler */ protected void sendBootstrap () { + Log.info("Sending bootstrap [client=" + this + "]."); + // create and populate our bootstrap data BootstrapData data = createBootstrapData(); populateBootstrapData(data); diff --git a/src/java/com/threerings/presents/server/PresentsServer.java b/src/java/com/threerings/presents/server/PresentsServer.java index b55388593..0e970d86c 100644 --- a/src/java/com/threerings/presents/server/PresentsServer.java +++ b/src/java/com/threerings/presents/server/PresentsServer.java @@ -1,5 +1,5 @@ // -// $Id: PresentsServer.java,v 1.6 2001/07/19 07:09:16 mdb Exp $ +// $Id: PresentsServer.java,v 1.7 2001/07/19 07:48:25 mdb Exp $ package com.threerings.cocktail.cher.server; @@ -9,6 +9,8 @@ import com.threerings.cocktail.cher.server.net.AuthManager; import com.threerings.cocktail.cher.server.net.ConnectionManager; import com.threerings.cocktail.cher.server.test.TestObject; +import com.threerings.cocktail.cher.server.test.TestProvider; +import com.threerings.cocktail.cher.client.test.TestService; /** * The cher server provides a central point of access to the various @@ -51,6 +53,9 @@ public class CherServer // create an object for testing omgr.createObject(TestObject.class, null, false); + // register our test provider + invmgr.registerProvider(TestService.MODULE, new TestProvider()); + } catch (Exception e) { Log.warning("Unable to initialize server."); Log.logStackTrace(e); diff --git a/tests/src/java/com/threerings/presents/client/TestClient.java b/tests/src/java/com/threerings/presents/client/TestClient.java index 19c350b49..f64498e89 100644 --- a/tests/src/java/com/threerings/presents/client/TestClient.java +++ b/tests/src/java/com/threerings/presents/client/TestClient.java @@ -1,5 +1,5 @@ // -// $Id: TestClient.java,v 1.4 2001/06/13 05:17:55 mdb Exp $ +// $Id: TestClient.java,v 1.5 2001/07/19 07:48:25 mdb Exp $ package com.threerings.cocktail.cher.client.test; @@ -37,7 +37,9 @@ public class TestClient { Log.info("Client did logon [client=" + client + "]."); // try subscribing to a test object - client.getDObjectManager().subscribeToObject(1, this); + client.getDObjectManager().subscribeToObject(2, this); + // issue a test invocation request + TestService.test(client, "foo", 1, this); } public void clientFailedToLogon (Client client, Exception cause) @@ -85,6 +87,11 @@ public class TestClient return false; } + public void handleTestSucceeded (String response) + { + Log.info("Got test response [rsp=" + response + "]."); + } + public static void main (String[] args) { TestClient tclient = new TestClient(); diff --git a/tests/src/java/com/threerings/presents/client/TestService.java b/tests/src/java/com/threerings/presents/client/TestService.java new file mode 100644 index 000000000..3f320faaa --- /dev/null +++ b/tests/src/java/com/threerings/presents/client/TestService.java @@ -0,0 +1,25 @@ +// +// $Id: TestService.java,v 1.1 2001/07/19 07:48:25 mdb Exp $ + +package com.threerings.cocktail.cher.client.test; + +import com.threerings.cocktail.cher.Log; +import com.threerings.cocktail.cher.client.Client; +import com.threerings.cocktail.cher.client.InvocationManager; + +/** + * A test of the invocation services. + */ +public class TestService +{ + public static final String MODULE = "test"; + + public static void test ( + Client client, String one, int two, Object rsptarget) + { + InvocationManager invmgr = client.getInvocationManager(); + Object[] args = new Object[] { one, new Integer(two) }; + invmgr.invoke(MODULE, "Test", args, rsptarget); + Log.info("Sent test request [one=" + one + ", two=" + two + "]."); + } +} diff --git a/tests/src/java/com/threerings/presents/server/TestProvider.java b/tests/src/java/com/threerings/presents/server/TestProvider.java new file mode 100644 index 000000000..bbb89c874 --- /dev/null +++ b/tests/src/java/com/threerings/presents/server/TestProvider.java @@ -0,0 +1,17 @@ +// +// $Id: TestProvider.java,v 1.1 2001/07/19 07:48:25 mdb Exp $ + +package com.threerings.cocktail.cher.server.test; + +import com.threerings.cocktail.cher.Log; + +/** + * A test of the invocation services. + */ +public class TestProvider +{ + public Object[] handleTestRequest (String one, int two) + { + Log.info("Test request [one=" + one + ", two=" + two + "]."); + } +}