From 810969f6f9ba1ab812b14c23727837c56843ce8f Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Wed, 22 Aug 2007 01:15:39 +0000 Subject: [PATCH] Pass a message along with a FailureResponse. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4819 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../threerings/presents/client/ClientDObjectMgr.as | 7 +++---- .../com/threerings/presents/net/FailureResponse.as | 9 ++++++++- .../presents/client/ClientDObjectMgr.java | 8 +++----- .../presents/dobj/ObjectAccessException.java | 3 +-- .../threerings/presents/net/FailureResponse.java | 14 ++++++++++---- .../threerings/presents/server/PresentsClient.java | 2 +- 6 files changed, 26 insertions(+), 17 deletions(-) diff --git a/src/as/com/threerings/presents/client/ClientDObjectMgr.as b/src/as/com/threerings/presents/client/ClientDObjectMgr.as index 77770e661..434f4dc11 100644 --- a/src/as/com/threerings/presents/client/ClientDObjectMgr.as +++ b/src/as/com/threerings/presents/client/ClientDObjectMgr.as @@ -198,8 +198,7 @@ public class ClientDObjectMgr } } else if (obj is FailureResponse) { - var foid :int = (obj as FailureResponse).getOid(); - notifyFailure(foid); + notifyFailure((obj as FailureResponse).getOid(), (obj as FailureResponse).getMessage()); } else if (obj is PongResponse) { _client.gotPong(obj as PongResponse); @@ -303,7 +302,7 @@ public class ClientDObjectMgr * Notifies the subscribers that had requested this object (for subscription) that it is not * available. */ - protected function notifyFailure (oid :int) :void + protected function notifyFailure (oid :int, message :String) :void { // let the penders know that the object is not available var req :PendingRequest = (_penders.remove(oid) as PendingRequest); @@ -315,7 +314,7 @@ public class ClientDObjectMgr for (var ii :int = 0; ii < req.targets.length; ii++) { var target :Subscriber = req.targets[ii]; // and let them know that the object is in - target.requestFailed(oid, new ObjectAccessError("No such object " + oid + ".")); + target.requestFailed(oid, new ObjectAccessError(message)); } } diff --git a/src/as/com/threerings/presents/net/FailureResponse.as b/src/as/com/threerings/presents/net/FailureResponse.as index 1159c4d84..b8ff68044 100644 --- a/src/as/com/threerings/presents/net/FailureResponse.as +++ b/src/as/com/threerings/presents/net/FailureResponse.as @@ -30,17 +30,24 @@ public class FailureResponse extends DownstreamMessage return _oid; } + public function getMessage () :String + { + return _message; + } + public function toString () :String { - return "[type=FAIL, msgid=" + messageId + ", oid=" + _oid + "]"; + return "[type=FAIL, msgid=" + messageId + ", oid=" + _oid + ", msg=" + _message + "]"; } override public function readObject (ins :ObjectInputStream) :void { super.readObject(ins); _oid = ins.readInt(); + _message = ins.readUTF(); } protected var _oid :int; + protected var _message :String; } } diff --git a/src/java/com/threerings/presents/client/ClientDObjectMgr.java b/src/java/com/threerings/presents/client/ClientDObjectMgr.java index a92fa2850..1fe6f61ac 100644 --- a/src/java/com/threerings/presents/client/ClientDObjectMgr.java +++ b/src/java/com/threerings/presents/client/ClientDObjectMgr.java @@ -169,8 +169,7 @@ public class ClientDObjectMgr } } else if (obj instanceof FailureResponse) { - int oid = ((FailureResponse)obj).getOid(); - notifyFailure(oid); + notifyFailure(((FailureResponse)obj).getOid(), ((FailureResponse)obj).getMessage()); } else if (obj instanceof PongResponse) { _client.gotPong((PongResponse)obj); @@ -303,7 +302,7 @@ public class ClientDObjectMgr * Notifies the subscribers that had requested this object (for subscription) that it is not * available. */ - protected void notifyFailure (int oid) + protected void notifyFailure (int oid, String message) { // let the penders know that the object is not available PendingRequest req = _penders.remove(oid); @@ -313,8 +312,7 @@ public class ClientDObjectMgr } for (int i = 0; i < req.targets.size(); i++) { - // and let them know that the object is in - req.targets.get(i).requestFailed(oid, null); + req.targets.get(i).requestFailed(oid, new ObjectAccessException(message)); } } diff --git a/src/java/com/threerings/presents/dobj/ObjectAccessException.java b/src/java/com/threerings/presents/dobj/ObjectAccessException.java index 05eadb3a2..ea7ae2167 100644 --- a/src/java/com/threerings/presents/dobj/ObjectAccessException.java +++ b/src/java/com/threerings/presents/dobj/ObjectAccessException.java @@ -30,8 +30,7 @@ package com.threerings.presents.dobj; public class ObjectAccessException extends Exception { /** - * Constructs a object access exception with the specified error - * message. + * Constructs a object access exception with the specified error message. */ public ObjectAccessException (String message) { diff --git a/src/java/com/threerings/presents/net/FailureResponse.java b/src/java/com/threerings/presents/net/FailureResponse.java index d4eaac890..e5021b07b 100644 --- a/src/java/com/threerings/presents/net/FailureResponse.java +++ b/src/java/com/threerings/presents/net/FailureResponse.java @@ -32,12 +32,12 @@ public class FailureResponse extends DownstreamMessage } /** - * Constructs a failure response in response to a request for the - * specified oid. + * Constructs a failure response in response to a request for the specified oid. */ - public FailureResponse (int oid) + public FailureResponse (int oid, String message) { _oid = oid; + _message = message; } public int getOid () @@ -45,10 +45,16 @@ public class FailureResponse extends DownstreamMessage return _oid; } + public String getMessage () + { + return _message; + } + public String toString () { - return "[type=FAIL, msgid=" + messageId + ", oid=" + _oid + "]"; + return "[type=FAIL, msgid=" + messageId + ", oid=" + _oid + ", msg=" + _message + "]"; } protected int _oid; + protected String _message; } diff --git a/src/java/com/threerings/presents/server/PresentsClient.java b/src/java/com/threerings/presents/server/PresentsClient.java index ecb0c0867..71ebd3e37 100644 --- a/src/java/com/threerings/presents/server/PresentsClient.java +++ b/src/java/com/threerings/presents/server/PresentsClient.java @@ -820,7 +820,7 @@ public class PresentsClient // from interface ProxySubscriber public void requestFailed (int oid, ObjectAccessException cause) { - postMessage(new FailureResponse(oid)); + postMessage(new FailureResponse(oid, cause.getMessage())); } // from interface ProxySubscriber