/// <summary>
        /// 出错了
        /// </summary>
        /// <param name="connId"></param>
        /// <param name="enOperation"></param>
        /// <param name="errorCode"></param>
        /// <returns></returns>
        protected virtual HandleResult OnServerClose(IServer sender, IntPtr connId, SocketOperation enOperation, int errorCode)
        {
            if (errorCode == 0)
            {
                AddMsg(string.Format(" > [{0},OnServerClose]", connId));
            }
            else
            {
                AddMsg(string.Format(" > [{0},OnServerError] -> OP:{1},CODE:{2}", connId, enOperation, errorCode));
            }
            // return HPSocketSdk.HandleResult.Ok;

            // 获取附加数据
            // extra 就是accept里传入的附加数据了
            ConnExtraData extra = serverExtra.Get(connId);

            if (extra == null)
            {
                return(HandleResult.Error);
            }

            if (extra.FreeType == 0)
            {
                // 由client(N)断开连接,释放agent数据
                agent.Disconnect(extra.ConnIdForClient);
                agentExtra.Remove(extra.ConnIdForClient);
            }

            serverExtra.Remove(connId);

            return(HandleResult.Ok);
        }
Exemple #2
0
        /// <summary>
        /// 客户离开了
        /// </summary>
        /// <param name="dwConnId"></param>
        /// <returns></returns>
        protected virtual HandleResult OnServerClose(IntPtr dwConnId)
        {
            // 获取附加数据
            IntPtr extraPtr = IntPtr.Zero;

            if (server.GetConnectionExtra(dwConnId, ref extraPtr) == false)
            {
                return(HandleResult.Error);
            }

            // extra 就是accept里传入的附加数据了
            ConnExtraData extra = (ConnExtraData)Marshal.PtrToStructure(extraPtr, typeof(ConnExtraData));

            if (extra.FreeType == 0)
            {
                // 由client(N)断开连接,释放agent数据
                agent.Disconnect(extra.ConnIdForClient);
                agent.SetConnectionExtra(extra.ConnIdForClient, null);
            }

            server.SetConnectionExtra(dwConnId, null);

            AddMsg(string.Format(" > [{0},OnServerClose]", dwConnId));
            return(HandleResult.Ok);
        }
Exemple #3
0
        /// <summary>
        /// 出错了
        /// </summary>
        /// <param name="connId"></param>
        /// <param name="enOperation"></param>
        /// <param name="errorCode"></param>
        /// <returns></returns>
        protected virtual HandleResult OnServerClose(IntPtr connId, SocketOperation enOperation, int errorCode)
        {
            if (errorCode == 0)
            {
                AddMsg(string.Format(" > [{0},OnServerClose]", connId));
            }
            else
            {
                AddMsg(string.Format(" > [{0},OnServerError] -> OP:{1},CODE:{2}", connId, enOperation, errorCode));
            }
            // return HPSocketSdk.HandleResult.Ok;

            // 获取附加数据
            IntPtr extraPtr = IntPtr.Zero;

            if (server.GetConnectionExtra(connId, ref extraPtr) == false)
            {
                return(HandleResult.Error);
            }

            // extra 就是accept里传入的附加数据了
            ConnExtraData extra = (ConnExtraData)Marshal.PtrToStructure(extraPtr, typeof(ConnExtraData));

            if (extra.FreeType == 0)
            {
                // 由client(N)断开连接,释放agent数据
                agent.Disconnect(extra.ConnIdForClient);
                agent.SetConnectionExtra(extra.ConnIdForClient, null);
            }

            server.SetConnectionExtra(connId, null);

            return(HandleResult.Ok);
        }