public void SessionClosed(int ClosedByErrorCode) { if (questProcessor != null) { questProcessor.SessionClosed(ClosedByErrorCode); } RTMControlCenter.UnregisterSession(connectionId); }
private void AuthFinish(bool authStatus, int errorCode) { AuthStatusInfo currInfo; TCPClient client = null; long connectionId = 0; long currUid; lock (interLocker) { if (status != ClientStatus.Connecting) { return; } if (authStatus) { status = ClientStatus.Connected; authStatsInfo.rtmClients.Remove(rtmGate); } else { status = ClientStatus.Closed; connectionId = rtmGateConnectionId; rtmGateConnectionId = 0; client = rtmGate; rtmGate = null; } currInfo = authStatsInfo; authStatsInfo = null; currUid = uid; syncConnectingEvent.Set(); } if (currInfo != null) { currInfo.authCallback(pid, currUid, authStatus, errorCode); } if (connectionId != 0) { RTMControlCenter.UnregisterSession(connectionId); } if (client != null) { client.Close(); } }
public bool ReloginWillStart(int lastErrorCode, int retriedCount) { bool startRelogin = true; if (questProcessor != null) { startRelogin = questProcessor.ReloginWillStart(lastErrorCode, retriedCount); } if (startRelogin) //-- if startRelogin == false, will call SessionClosed(), the UnregisterSession() will be called in SessionClosed(). { RTMControlCenter.UnregisterSession(connectionId); } return(startRelogin); }
//-------------[ Auth(Login) processing functions ]--------------------------// private void AuthFinish(bool authStatus, int errorCode) { AuthStatusInfo currInfo; long currUid; bool isRelogin = false; Int64 reservedRtmGateConnectionId = 0; lock (interLocker) { if (status != ClientStatus.Connecting) { return; } if (authStatus) { status = ClientStatus.Connected; } else { status = ClientStatus.Closed; reservedRtmGateConnectionId = rtmGateConnectionId; rtmGateConnectionId = 0; //-- Reserving rtmGate without closing for quick relogin. } if (autoReloginInfo != null) { isRelogin = autoReloginInfo.canRelogin; if (authStatsInfo != null) { autoReloginInfo.token = authStatsInfo.token; autoReloginInfo.attr = authStatsInfo.attr; autoReloginInfo.lang = authStatsInfo.lang; } if (authStatus && !autoReloginInfo.canRelogin) { autoReloginInfo.LoginSuccessful(); } } currInfo = authStatsInfo; authStatsInfo = null; currUid = uid; syncConnectingEvent.Set(); } if (reservedRtmGateConnectionId != 0) { RTMControlCenter.UnregisterSession(reservedRtmGateConnectionId); } if (currInfo != null) { foreach (AuthDelegate callback in currInfo.authDelegates) { callback(projectId, currUid, authStatus, errorCode); } } if (authStatus) { processor.BeginCheckPingInterval(); } }