We love to revamp! Created a set of listener interfaces which are used

with distributed objects rather than having a single handleEvent() by
which all subscribers are forced to hear about all events. Now one
subscribes separately and then adds onesself as any of a few types of
listener once they have access to the subscribed object reference.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@439 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2001-10-12 00:03:03 +00:00
parent de8d9dabd1
commit 804505890f
34 changed files with 534 additions and 323 deletions
@@ -1,5 +1,5 @@
//
// $Id: TestClient.java,v 1.10 2001/10/11 04:07:52 mdb Exp $
// $Id: TestClient.java,v 1.11 2001/10/12 00:03:03 mdb Exp $
package com.threerings.presents.client.test;
@@ -16,7 +16,7 @@ import com.threerings.presents.server.test.TestObject;
* A standalone test client.
*/
public class TestClient
implements Client.Invoker, ClientObserver, Subscriber
implements Client.Invoker, ClientObserver, Subscriber, EventListener
{
public void setClient (Client client)
{
@@ -74,6 +74,7 @@ public class TestClient
public void objectAvailable (DObject object)
{
object.addListener(this);
Log.info("Object available: " + object);
((TestObject)object).setBar("lawl!");
}
@@ -86,17 +87,18 @@ public class TestClient
_client.logoff(true);
}
public boolean handleEvent (DEvent event, DObject target)
public void eventReceived (DEvent event)
{
Log.info("Got event [event=" + event + ", target=" + target + "].");
Log.info("Got event [event=" + event + "].");
if (event instanceof AttributeChangedEvent) {
// request to destroy the object
target.destroy();
_client.getDObjectManager().destroyObject(event.getTargetOid());
} else {
// request that we log off
_client.logoff(true);
}
return true;
}
public void handleTestSucceeded (int invid, String one, int two)
@@ -1,5 +1,5 @@
//
// $Id: DOMTest.java,v 1.2 2001/10/11 04:07:53 mdb Exp $
// $Id: DOMTest.java,v 1.3 2001/10/12 00:03:03 mdb Exp $
package com.threerings.presents.server.test;
@@ -10,10 +10,13 @@ import com.threerings.presents.server.*;
/**
* A simple test case for the dobjmgr.
*/
public class DOMTest implements Subscriber
public class DOMTest implements Subscriber, AttributeChangeListener
{
public void objectAvailable (DObject object)
{
// add ourselves as a listener
object.addListener(this);
Log.info("Object available: " + object);
// set some values
TestObject to = (TestObject)object;
@@ -27,17 +30,14 @@ public class DOMTest implements Subscriber
omgr.shutdown();
}
public boolean handleEvent (DEvent event, DObject target)
public void attributeChanged (AttributeChangedEvent event)
{
Log.info("Got event [event=" + event + ", target=" + target + "].");
Log.info("Got event [event=" + event + "].");
// if this is the second event, request a shutdown
AttributeChangedEvent ace = (AttributeChangedEvent)event;
if (ace.getName().equals(TestObject.BAR)) {
if (event.getName().equals(TestObject.BAR)) {
omgr.shutdown();
}
return true;
}
public static PresentsDObjectMgr omgr = new PresentsDObjectMgr();
@@ -1,5 +1,5 @@
//
// $Id: DestroyedRefTest.java,v 1.2 2001/10/11 04:07:53 mdb Exp $
// $Id: DestroyedRefTest.java,v 1.3 2001/10/12 00:03:03 mdb Exp $
package com.threerings.presents.server.test;
@@ -12,7 +12,7 @@ import com.threerings.presents.server.PresentsServer;
* an oid list.
*/
public class DestroyedRefTest
implements Runnable, Subscriber
implements Runnable, Subscriber, EventListener
{
public void run ()
{
@@ -23,6 +23,9 @@ public class DestroyedRefTest
public void objectAvailable (DObject object)
{
// add ourselves as an event listener
object.addListener(this);
// keep references to our test objects
if (_objone == null) {
_objone = (TestObject)object;
@@ -51,14 +54,16 @@ public class DestroyedRefTest
Log.warning("Ack. Unable to create object [cause=" + cause + "].");
}
public boolean handleEvent (DEvent event, DObject target)
public void eventReceived (DEvent event)
{
int toid = event.getTargetOid();
// when we get the attribute change, we can exit
if (event instanceof ObjectDestroyedEvent) {
Log.info("The upcoming object added event should be rejected.");
} else if (event instanceof ObjectAddedEvent &&
target == _objtwo) {
toid == _objtwo.getOid()) {
Log.info("list should contain only one oid: " + _objtwo.list);
} else if (event instanceof AttributeChangedEvent) {
@@ -68,8 +73,6 @@ public class DestroyedRefTest
} else {
Log.info("Got unexpected event: " + event);
}
return true;
}
protected TestObject _objone;
@@ -1,5 +1,5 @@
//
// $Id: RefTest.java,v 1.2 2001/10/11 04:07:53 mdb Exp $
// $Id: RefTest.java,v 1.3 2001/10/12 00:03:03 mdb Exp $
package com.threerings.presents.server.test;
@@ -11,7 +11,7 @@ import com.threerings.presents.server.PresentsServer;
* Tests the oid list reference tracking code.
*/
public class RefTest
implements Runnable, Subscriber
implements Runnable, Subscriber, EventListener
{
public void run ()
{
@@ -22,6 +22,9 @@ public class RefTest
public void objectAvailable (DObject object)
{
// add ourselves as an event listener to our subscribed object
object.addListener(this);
// keep references to our test objects
if (_objone == null) {
_objone = (TestObject)object;
@@ -40,18 +43,20 @@ public class RefTest
Log.warning("Ack. Unable to create object [cause=" + cause + "].");
}
public boolean handleEvent (DEvent event, DObject target)
public void eventReceived (DEvent event)
{
// Log.info("Got event: " + event);
int toid = event.getTargetOid();
// once we receive the second object added we can destroy the
// target object to see if the reference is cleaned up
if (event instanceof ObjectAddedEvent && target == _objtwo) {
if (event instanceof ObjectAddedEvent &&
toid == _objtwo.getOid()) {
Log.info("Destroying object two " + _objtwo + ".");
_objtwo.destroy();
} else if (event instanceof ObjectDestroyedEvent) {
if (target == _objtwo) {
if (toid == _objtwo.getOid()) {
Log.info("List won't yet be empty: " + _objone.list);
} else {
Log.info("Other object destroyed.");
@@ -64,8 +69,6 @@ public class RefTest
// finally destroy the other object to complete the circle
_objone.destroy();
}
return true;
}
protected TestObject _objone;
@@ -1,5 +1,5 @@
//
// $Id: TestServer.java,v 1.4 2001/10/11 04:07:53 mdb Exp $
// $Id: TestServer.java,v 1.5 2001/10/12 00:03:03 mdb Exp $
package com.threerings.presents.server.test;
@@ -38,11 +38,6 @@ public class TestServer extends PresentsServer
Log.warning("Unable to create test object " +
"[error=" + cause + "].");
}
public boolean handleEvent (DEvent event, DObject target)
{
return false;
}
};
omgr.createObject(TestObject.class, sub, false);
}