diff --git a/src/as/com/threerings/presents/client/Client.as b/src/as/com/threerings/presents/client/Client.as index 04a53c280..96cedeefc 100644 --- a/src/as/com/threerings/presents/client/Client.as +++ b/src/as/com/threerings/presents/client/Client.as @@ -57,6 +57,8 @@ public class Client extends EventDispatcher cliObs.clientConnectionFailed); addEventListener(ClientEvent.CLIENT_WILL_LOGOFF, cliObs.clientWillLogoff); + addEventListener(ClientEvent.CLIENT_DID_CLEAR, + cliObs.clientDidClear); } } @@ -81,6 +83,8 @@ public class Client extends EventDispatcher cliObs.clientConnectionFailed); removeEventListener(ClientEvent.CLIENT_WILL_LOGOFF, cliObs.clientWillLogoff); + removeEventListener(ClientEvent.CLIENT_DID_CLEAR, + cliObs.clientDidClear); } } @@ -325,6 +329,8 @@ public class Client extends EventDispatcher // another port, or something if (logonError != null) { notifyObservers(ClientEvent.CLIENT_FAILED_TO_LOGON, logonError); + } else { + notifyObservers(ClientEvent.CLIENT_DID_CLEAR, null); } } diff --git a/src/as/com/threerings/presents/client/ClientEvent.as b/src/as/com/threerings/presents/client/ClientEvent.as index 883e5d365..1f910a2e3 100644 --- a/src/as/com/threerings/presents/client/ClientEvent.as +++ b/src/as/com/threerings/presents/client/ClientEvent.as @@ -12,6 +12,7 @@ public class ClientEvent extends Event * preventDefault() on this event. */ public static const CLIENT_WILL_LOGOFF :String = "clientWillLogoff"; public static const CLIENT_DID_LOGOFF :String = "clientDidLogoff"; + public static const CLIENT_DID_CLEAR :String = "clientDidClear"; public function ClientEvent (type :String, client :Client, cause :Error = null) @@ -31,6 +32,11 @@ public class ClientEvent extends Event return _cause; } + override public function clone () :Event + { + return new ClientEvent(type, _client, _cause); + } + /** The client that generated this client event. */ protected var _client :Client; diff --git a/src/as/com/threerings/presents/client/ClientObserver.as b/src/as/com/threerings/presents/client/ClientObserver.as index 0ca721075..a2ae50dd8 100644 --- a/src/as/com/threerings/presents/client/ClientObserver.as +++ b/src/as/com/threerings/presents/client/ClientObserver.as @@ -76,5 +76,14 @@ public interface ClientObserver extends SessionObserver * calls event.preventDefault() then it will abort the logoff request. */ function clientWillLogoff (event :ClientEvent) :void; + + /** + * Called after the client is completely logged off from a successful + * session and is ready to reconnect to a new server if desired. This will + * only be called after an active session was terminated, not after a logon + * attempt failed as that failure will be reported by {@link + * #clientFailedToLogon}. + */ + function clientDidClear (event :ClientEvent) :void; } }