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:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user