From 17987537f45d83b4cbb07430d5c9d3b9f6b5d6d4 Mon Sep 17 00:00:00 2001 From: Ray Greenwell Date: Sat, 4 Feb 2006 03:49:53 +0000 Subject: [PATCH] Provide a convenient method for indicating that a listener does not need to be responded to. It turns out that a listener may not be a marshaller if a server entity is calling a service request method directly. The convenience method handles this and is also cleaner looking for callers. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3832 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../presents/data/InvocationMarshaller.java | 11 +++++++++++ .../com/threerings/whirled/server/SceneProvider.java | 3 +-- .../threerings/whirled/spot/server/SpotProvider.java | 5 ++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/java/com/threerings/presents/data/InvocationMarshaller.java b/src/java/com/threerings/presents/data/InvocationMarshaller.java index 87da068c4..243e40c1d 100644 --- a/src/java/com/threerings/presents/data/InvocationMarshaller.java +++ b/src/java/com/threerings/presents/data/InvocationMarshaller.java @@ -237,6 +237,17 @@ public class InvocationMarshaller return _invCode; } + /** + * A convenience method to indicate that the listener is not going + * to be responded-to, and that this is ok. + */ + public static void setNoResponse (InvocationListener listener) + { + if (listener instanceof ListenerMarshaller) { + ((ListenerMarshaller) listener).setNoResponse(); + } + } + /** * Called by generated invocation marshaller code; packages up and * sends the specified invocation service request. diff --git a/src/java/com/threerings/whirled/server/SceneProvider.java b/src/java/com/threerings/whirled/server/SceneProvider.java index 4a6bfec38..24d464177 100644 --- a/src/java/com/threerings/whirled/server/SceneProvider.java +++ b/src/java/com/threerings/whirled/server/SceneProvider.java @@ -74,8 +74,7 @@ public class SceneProvider Log.info("Abandoning scene move, client gone " + "[who=" + source.who() + ", dest=" + scmgr.where() + "]."); - ((InvocationMarshaller.ListenerMarshaller) listener). - setNoResponse(); + InvocationMarshaller.setNoResponse(listener); return; } finishMoveToRequest(source, scmgr, sceneVer, listener); diff --git a/src/java/com/threerings/whirled/spot/server/SpotProvider.java b/src/java/com/threerings/whirled/spot/server/SpotProvider.java index 05a397744..495f878f8 100644 --- a/src/java/com/threerings/whirled/spot/server/SpotProvider.java +++ b/src/java/com/threerings/whirled/spot/server/SpotProvider.java @@ -80,7 +80,7 @@ public class SpotProvider Log.info("Ignoring stale traverse portal request " + "[caller=" + caller.who() + ", oSceneId=" + sceneId + ", portalId=" + portalId + ", cSceneId=" + cSceneId + "]."); - ((InvocationMarshaller.ListenerMarshaller) listener).setNoResponse(); + InvocationMarshaller.setNoResponse(listener); return; } @@ -131,8 +131,7 @@ public class SpotProvider Log.info("Abandoning portal traversal, client gone " + "[who=" + fsource.who() + ", dest=" + scmgr.where() + "]."); - ((InvocationMarshaller.ListenerMarshaller) flistener). - setNoResponse(); + InvocationMarshaller.setNoResponse(flistener); return; }