public ServerLoginUserInfo GetLoginUserInfo(string ipport) { long accId = -1; if (OnlineSessions.TryGetValue(ipport, out accId)) { ServerLoginUserInfo suser = null; OnlineUsers.TryGetValue(accId, out suser); return(suser); } return(null); }
public bool KickUser(long accountId, int timeOut, LogoutReason reason, AutoResetEvent evt) { ServerLoginUserInfo user = GetLoginUserInfo(accountId); if (user == null) { return(false); } try { PushNotification(new UserNotification_ChangeUserStatus(user.LoginInfo.Info.TaskGroupID, user.AccountID, LoginStatus.离线)); if (ProjectDoc.Instance.SelectedViewportInfo != null) { ProjectDoc.Instance.SelectedViewportInfo.RemoveAllCreatorElements(user.AccountID); } if (user.LoginInfo.AdjudicatorMode) { RemoveMonitorUserFromAllReferrencers(user.AccountID); } OnlineUsers.Remove(user.AccountID); OnlineSessions.Remove(user.LinkIPPortCaption); OnlineSessions.Remove(user.ServiceIPPortCaption); if (user.Channel.State != CommunicationState.Closed) { CommonMethods.CloseChannel(user.Channel, timeOut, evt); } user.Channel.Closed -= new EventHandler(Channel_Closed); user.Context = null; if (UserLogouted != null) { UserLogouted(accountId, reason); } return(true); } catch (System.Exception ex) { return(false); } }