public void Execute() { List<string> argList =ArgumentsParser.Parse(_Request.Content); int appType = argList[3].ToInt(); LoginParameter loginParameter = new LoginParameter() { LoginId = argList[0], Password=argList[1], Version=argList[2], AppType=(AppType)argList[3].ToInt(), Request=_Request }; LoginManager loginManager = new LoginManager(); loginManager.StateLoadingCompleted += OnLoginStateLoadingCompleteCallback; loginManager.Login(loginParameter); }
public void Login(LoginParameter parameter) { AsyncEnumerator ae = new AsyncEnumerator(); ae.BeginExecute(_LoginProvider.AsyncLogin(parameter, ae), ae.EndExecute); }
public IEnumerator<int> AsyncLogin(LoginParameter parameter,AsyncEnumerator ae) { string connectionString = SettingManager.Default.ConnectionString; LoginInfo loginInfo = new LoginInfo() { Parameter=parameter}; if (LoginRetryTimeHelper.IsFailedCountExceeded(parameter.LoginId, ParticipantType.Customer, connectionString)) { loginInfo.Status = LoginStatus.ExceedMaxRetryCount; OnCompleted(loginInfo); yield break; } if (!parameter.LoginId.HasValue()) { loginInfo.Status = LoginStatus.LoginIdIsEmpty; OnCompleted(loginInfo); yield break; } Application.Default.ParticipantService.BeginLogin(parameter.LoginId, parameter.Password,ae.End(), null); yield return 1; try { loginInfo.UserID = Application.Default.ParticipantService.EndLogin(ae.DequeueAsyncResult()); } catch (Exception ex) { _Logger.Error(ex); loginInfo.Status = LoginStatus.ParticipantServiceLoginFailed; OnCompleted(loginInfo); yield break; } if (loginInfo.UserID == Guid.Empty) { loginInfo.Status = LoginStatus.UserIdIsEmpty; OnCompleted(loginInfo); yield break; } Guid programID = new Guid(SettingManager.Default.GetJavaTraderSettings("TradingConsole")); Guid permissionID = new Guid(SettingManager.Default.GetJavaTraderSettings("Run")); Application.Default.SecurityService.BeginCheckPermission(loginInfo.UserID, programID, permissionID, "", "", loginInfo.UserID, ae.End(), null); yield return 1; bool isAuthrized = false; try { string message; isAuthrized = Application.Default.SecurityService.EndCheckPermission(ae.DequeueAsyncResult(), out message); } catch (Exception ex) { _Logger.Error(ex); loginInfo.Status = LoginStatus.CheckPermissionFailed; OnCompleted(loginInfo); yield break; } if (!isAuthrized) { loginInfo.Status = LoginStatus.NotAuthrized; OnCompleted(loginInfo); yield break; } var token = new Token(Guid.Empty, UserType.Customer, parameter.AppType); token.UserID = loginInfo.UserID; token.SessionID = parameter.Request.ClientInfo.Session.ToString(); SessionManager.Default.AddToken(parameter.Request.ClientInfo.Session, token); var stateServerCallToken = new Token { UserID = token.UserID, AppType = AppType.TradingConsole, SessionID = token.SessionID, UserType=token.UserType }; Application.Default.StateServer.BeginLogin(stateServerCallToken, ae.End(), null); yield return 1; bool isStateServerLogined = false; try { isStateServerLogined = Application.Default.StateServer.EndLogin(ae.DequeueAsyncResult()); } catch (Exception ex) { _Logger.Error(ex); loginInfo.Status = LoginStatus.StateServerLoginFailed; OnCompleted(loginInfo); yield break; } if (!isStateServerLogined) { loginInfo.Status = LoginStatus.StateServerNotLogined; OnCompleted(loginInfo); yield break; } loginInfo.Status = LoginStatus.Success; OnCompleted(loginInfo); }