コード例 #1
0
        /// <summary>
        /// Initialize the service.
        /// </summary>
        public void Initialize()
        {
            try
            {
                using (var context = new ComplexUserContext())
                {
                    foreach (ComplexUserAccount userAccount in context.Objects.ToList())
                    {
                        var state = new AccountStateModel
                        {
                            AccountModel = userAccount,
                            Address      = string.Empty,
                            OnlineStatus = AccountOnlineStatus.Offline
                        };

                        accountStates.Add(new ComplexAccountState(state));
                    }

                    StartUpdateCycle();

                    string message = $"Initialized {nameof(AccountStateService)}";
                    //message.WriteToConsole();
                    logger.Info(message);
                }
            }
            catch (Exception ex)
            {
                string message = $"Failed to initialize {nameof(AccountStateService)}";
                message.WriteToConsole();
                logger.Error(ex, message);
            }
        }
コード例 #2
0
        public ComplexAccountState(AccountStateModel stateModel)
        {
            //StateModel = stateModel ?? throw new ArgumentNullException(nameof(stateModel));
            Address      = stateModel?.Address ?? throw new ArgumentNullException(nameof(stateModel));
            OnlineStatus = stateModel.OnlineStatus;

            ComplexAccount =
                stateModel.AccountModel is ComplexUserAccount complexAcc ?
                complexAcc :
                stateModel.AccountModel.ToComplex();
        }
コード例 #3
0
        /// <summary>
        /// Преобразовать сложную серверную модель в простую для отправки юзеру.
        /// </summary>
        /// <param name="complexModel"></param>
        /// <returns></returns>
        public static AccountStateModel ToSimple(this ComplexAccountState complexModel)
        {
            var simpleModel = new AccountStateModel
            {
                Address      = complexModel.Address,
                OnlineStatus = complexModel.OnlineStatus,
                AccountModel = complexModel.ComplexAccount.ToSimpleModel()
            };

            return(simpleModel);
        }
コード例 #4
0
        private void CacheNewState(UserAccountModel accountModel, string address)
        {
            accountModel.LastLogInTime = DateTime.Now;

            var newState = new AccountStateModel
            {
                Address      = address,
                AccountModel = accountModel,
                OnlineStatus = AccountOnlineStatus.Offline
            };

            var complexState = new ComplexAccountState(newState);

            complexState.ClientAuth.ClientToken = CreateNewToken();
            complexState.ClientAuth.ServerToken = CreateNewToken();
            accountStates.Add(complexState);
        }