From e85e6ad617fa20a933ce51ece94f546dfee54869 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Fri, 11 Jul 2003 00:47:33 +0000 Subject: [PATCH] Catch our funny choking getOccupantInfo and log the failure prior to allowing things to get out of hand. Since getOccupantInfo may normally return null, doing so in our strange failure case will not cause further freakout. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2697 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../threerings/crowd/data/PlaceObject.dobj | 24 ++++++++++++++----- .../threerings/crowd/data/PlaceObject.java | 24 ++++++++++++++----- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/java/com/threerings/crowd/data/PlaceObject.dobj b/src/java/com/threerings/crowd/data/PlaceObject.dobj index 1c7edc937..8f7b0d8a6 100644 --- a/src/java/com/threerings/crowd/data/PlaceObject.dobj +++ b/src/java/com/threerings/crowd/data/PlaceObject.dobj @@ -1,5 +1,5 @@ // -// $Id: PlaceObject.dobj,v 1.15 2003/06/25 17:17:41 ray Exp $ +// $Id: PlaceObject.dobj,v 1.16 2003/07/11 00:47:33 mdb Exp $ package com.threerings.crowd.data; @@ -9,9 +9,16 @@ import com.threerings.presents.dobj.DObject; import com.threerings.presents.dobj.DSet; import com.threerings.presents.dobj.OidList; +import com.threerings.crowd.Log; import com.threerings.crowd.chat.data.SpeakMarshaller; import com.threerings.crowd.chat.data.SpeakObject; +/** + * A distributed object that contains information on a place that is + * occupied by bodies. This place might be a chat room, a game room, an + * island in a massively multiplayer piratical universe, anything that has + * occupants that might want to chat with one another. + */ public class PlaceObject extends DObject implements SpeakObject { @@ -54,12 +61,17 @@ public class PlaceObject extends DObject */ public OccupantInfo getOccupantInfo (String username) { - Iterator iter = occupantInfo.entries(); - while (iter.hasNext()) { - OccupantInfo info = (OccupantInfo)iter.next(); - if (info.username.equals(username)) { - return info; + try { + Iterator iter = occupantInfo.entries(); + while (iter.hasNext()) { + OccupantInfo info = (OccupantInfo)iter.next(); + if (info.username.equals(username)) { + return info; + } } + } catch (Throwable t) { + Log.warning("PlaceObject.getOccupantInfo choked."); + Log.logStackTrace(t); } return null; } diff --git a/src/java/com/threerings/crowd/data/PlaceObject.java b/src/java/com/threerings/crowd/data/PlaceObject.java index 2c3074e58..59451ab4f 100644 --- a/src/java/com/threerings/crowd/data/PlaceObject.java +++ b/src/java/com/threerings/crowd/data/PlaceObject.java @@ -1,5 +1,5 @@ // -// $Id: PlaceObject.java,v 1.14 2003/06/25 17:17:41 ray Exp $ +// $Id: PlaceObject.java,v 1.15 2003/07/11 00:47:33 mdb Exp $ package com.threerings.crowd.data; @@ -9,9 +9,16 @@ import com.threerings.presents.dobj.DObject; import com.threerings.presents.dobj.DSet; import com.threerings.presents.dobj.OidList; +import com.threerings.crowd.Log; import com.threerings.crowd.chat.data.SpeakMarshaller; import com.threerings.crowd.chat.data.SpeakObject; +/** + * A distributed object that contains information on a place that is + * occupied by bodies. This place might be a chat room, a game room, an + * island in a massively multiplayer piratical universe, anything that has + * occupants that might want to chat with one another. + */ public class PlaceObject extends DObject implements SpeakObject { @@ -63,12 +70,17 @@ public class PlaceObject extends DObject */ public OccupantInfo getOccupantInfo (String username) { - Iterator iter = occupantInfo.entries(); - while (iter.hasNext()) { - OccupantInfo info = (OccupantInfo)iter.next(); - if (info.username.equals(username)) { - return info; + try { + Iterator iter = occupantInfo.entries(); + while (iter.hasNext()) { + OccupantInfo info = (OccupantInfo)iter.next(); + if (info.username.equals(username)) { + return info; + } } + } catch (Throwable t) { + Log.warning("PlaceObject.getOccupantInfo choked."); + Log.logStackTrace(t); } return null; }