Exemplo n.º 1
0
        /// <summary>关闭</summary>
        /// <param name="reason">关闭原因。便于日志分析</param>
        /// <returns>是否成功</returns>
        public virtual Boolean Close(String reason)
        {
            if (!Active)
            {
                return(true);
            }
            lock (this)
            {
                if (!Active)
                {
                    return(true);
                }

                // 管道
                Pipeline?.Close(CreateContext(this), reason);

                var rs = true;
                if (OnClose(reason ?? (GetType().Name + "Close")))
                {
                    rs = false;
                }

                _RecvCount = 0;

                // 触发关闭完成的事件
                Closed?.Invoke(this, EventArgs.Empty);

                Active = rs;

                return(!rs);
            }
        }
Exemplo n.º 2
0
        /// <summary>关闭</summary>
        /// <param name="reason">关闭原因。便于日志分析</param>
        /// <returns>是否成功</returns>
        public virtual Boolean Close(String reason)
        {
            if (!Active)
            {
                return(true);
            }
            lock (this)
            {
                if (!Active)
                {
                    return(true);
                }

                using var span = Tracer?.NewSpan($"net:{Name}:Close", Remote);
                try
                {
                    // 管道
                    Pipeline?.Close(CreateContext(this), reason);

                    var rs = true;
                    if (OnClose(reason ?? (GetType().Name + "Close")))
                    {
                        rs = false;
                    }

                    _RecvCount = 0;

                    // 触发关闭完成的事件
                    Closed?.Invoke(this, EventArgs.Empty);

                    Active = rs;

                    return(!rs);
                }
                catch (Exception ex)
                {
                    span?.SetError(ex, null);
                    throw;
                }
            }
        }