/// <summary>
        ///     Handle the login of client.
        /// </summary>
        internal void StartSession(Account account, string ipAddress, string deviceModel, byte[] sessionId, int proxyId)
        {
            if (account.Session != null)
            {
                NetAccountSessionManager.TryRemove(account.Session.SessionId);

                account.Session.SendMessage(NetUtils.SERVICE_NODE_TYPE_PROXY_CONTAINER, new UnbindServerMessage());
                account.Session.Destruct();
                account.SetSession(null);
            }

            NetAccountSession session = NetAccountSessionManager.Create(account, sessionId);

            account.SetSession(session);
            account.SessionStarted(LogicTimeUtil.GetTimestamp(), ipAddress, deviceModel);
            session.SetServiceNodeId(NetUtils.SERVICE_NODE_TYPE_PROXY_CONTAINER, proxyId);

            LoginClientOkMessage loginClientOkMessage = new LoginClientOkMessage();

            loginClientOkMessage.SetAccountId(account.Id);
            loginClientOkMessage.SetHomeId(account.Id);
            loginClientOkMessage.SetPassToken(account.PassToken);
            loginClientOkMessage.SetAccountCreatedDate(account.AccountCreatedDate);
            loginClientOkMessage.SetSessionCount(account.TotalSessions);
            loginClientOkMessage.SetPlayTimeSeconds(account.PlayTimeSecs);

            session.SendMessage(NetUtils.SERVICE_NODE_TYPE_PROXY_CONTAINER, loginClientOkMessage);
        }
Exemple #2
0
 /// <summary>
 ///     Sets the <see cref="NetAccountSession"/> instance.
 /// </summary>
 internal void SetSession(NetAccountSession session)
 {
     this.Session = session;
 }