Example #1
0
        /// <summary>
        /// 业务逻辑处理
        /// </summary>
        /// <returns>false:中断后面的方式执行并返回Error</returns>
        public override bool TakeAction()
        {
            string key = CryptoHelper.MD5_Encrypt("" + _serverId + _tstamp + GlobalDefine.LoginSwitch_Key, Encoding.UTF8);

            if (key == _word && !ServerHelper.IsExistCS(_serverId))
            {
                var freeUserId = ServerHelper.GetFreeCSUserId();
                if (freeUserId > 0)
                {
                    Current.Bind(new SessionUser()
                    {
                        UserId = freeUserId, PassportId = string.Format("ConnectS-{0}", _serverId)
                    });
                    //设置忽略锁
                    Current.SetIgoreLock(true, actionId);
                    ServerHelper.AddCS(_serverId, Current);
                    _packet.Ret = 1;
                }
                else
                {
                    TraceLog.WriteError("所有给其它服分配的UserId已用完!");
                }
            }
            else
            {
                _packet.Ret = 0;
            }

            //
            SendLoginResult();
            //
            IsNotRespond = true;

            return(true);
        }