From 791dc95ea3ac711f9cfe930883c9a18ba589f51a Mon Sep 17 00:00:00 2001 From: Charlie Groves Date: Fri, 29 Jul 2011 08:54:45 +0000 Subject: [PATCH] Add unproxyRemoteObject(DObjectAddress) to complement unproxyRemoteObject(nodeName, oid) git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6688 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../presents/peer/server/PeerManager.java | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/threerings/presents/peer/server/PeerManager.java b/src/main/java/com/threerings/presents/peer/server/PeerManager.java index 5abcf9d6f..35030ed4b 100644 --- a/src/main/java/com/threerings/presents/peer/server/PeerManager.java +++ b/src/main/java/com/threerings/presents/peer/server/PeerManager.java @@ -612,42 +612,51 @@ public abstract class PeerManager }); } + /** * Unsubscribes from and clears a proxied object. The caller must be sure that there are no * remaining subscribers to the object on this local server. */ public void unproxyRemoteObject (String nodeName, int remoteOid) { - DObjectAddress key = new DObjectAddress(nodeName, remoteOid); - Tuple, DObject> bits = _proxies.remove(key); + unproxyRemoteObject(new DObjectAddress(nodeName, remoteOid)); + } + + /** + * Unsubscribes from and clears a proxied object. The caller must be sure that there are no + * remaining subscribers to the object on this local server. + */ + public void unproxyRemoteObject (DObjectAddress addr) + { + Tuple, DObject> bits = _proxies.remove(addr); if (bits == null) { - log.warning("Requested to clear unknown proxy", "key", key); + log.warning("Requested to clear unknown proxy", "addr", addr); return; } // If it's local, just remove the subscriber we added and bail - if (key.nodeName.equals(_nodeName)) { + if (addr.nodeName.equals(_nodeName)) { bits.right.removeSubscriber(bits.left); return; } // clear out the local object manager's proxy mapping - _omgr.clearProxyObject(remoteOid, bits.right); + _omgr.clearProxyObject(addr.oid, bits.right); - final Client peer = getPeerClient(nodeName); + final Client peer = getPeerClient(addr.nodeName); if (peer == null) { - log.warning("Unable to unsubscribe from proxy, missing peer", "key", key); + log.warning("Unable to unsubscribe from proxy, missing peer", "addr", addr); return; } // restore the object's omgr reference to our ClientDObjectMgr and its oid back to the // remote oid so that it can properly finish the unsubscription process - bits.right.setOid(remoteOid); + bits.right.setOid(addr.oid); bits.right.setManager(peer.getDObjectManager()); // finally unsubscribe from the object on our peer - peer.getDObjectManager().unsubscribeFromObject(remoteOid, bits.left); + peer.getDObjectManager().unsubscribeFromObject(addr.oid, bits.left); } /**