diff --git a/src/java/com/threerings/presents/peer/server/PeerManager.java b/src/java/com/threerings/presents/peer/server/PeerManager.java index 7a5fde4ad..3c4a6afaf 100644 --- a/src/java/com/threerings/presents/peer/server/PeerManager.java +++ b/src/java/com/threerings/presents/peer/server/PeerManager.java @@ -976,6 +976,24 @@ public abstract class PeerManager return new PeerCreds(_nodeName, _sharedSecret); } + /** + * Called when a peer connects to this server. + */ + protected void peerStartedSession (PeerSession session) + { + // this may be the first we've heard of this guy, so let's refresh our peers and + // potentially connect right back to him + refreshPeers(); + } + + /** + * Called when a peer's session with this server ends. + */ + protected void peerEndedSession (PeerSession session) + { + // nothing presently + } + /** * Called when we have established a connection to the supplied peer. */ @@ -1234,8 +1252,7 @@ public abstract class PeerManager // (this need not use a runqueue as all it will do is post an invoker unit) protected Interval _peerRefresher = new Interval() { - @Override - public void expired () { + @Override public void expired () { refreshPeers(); } }; diff --git a/src/java/com/threerings/presents/peer/server/PeerSession.java b/src/java/com/threerings/presents/peer/server/PeerSession.java index d4c5c32db..4f2630100 100644 --- a/src/java/com/threerings/presents/peer/server/PeerSession.java +++ b/src/java/com/threerings/presents/peer/server/PeerSession.java @@ -82,6 +82,18 @@ public class PeerSession extends PresentsSession // save the client oid so we know it even after the object itself is cleared out _cloid = _clobj.getOid(); + + // let the peer manager know that we're here + _peermgr.peerStartedSession(this); + } + + @Override // documentation inherited + protected void sessionDidEnd () + { + super.sessionDidEnd(); + + // let the peer manager know that we're audi + _peermgr.peerEndedSession(this); } @Override // from PresentsSession