Ejemplo n.º 1
0
        /// <summary>
        /// 断开连接处理器
        /// </summary>
        /// <returns></returns>
        private async Task InactiveHandler()
        {
            if (Interlocked.CompareExchange(ref isInactiveHandle, 1, 0) == 1)
            {
                return;
            }

            if (Status == ClientStatus.Closed || Status == ClientStatus.Connecting)
            {
                return;
            }

            Status = ClientStatus.PassiveClosed;
            await BootstrapManager.CloseAsync(channelName);

            logger.LogDebug($"Client inactive: close connect. Host={Host}, Port={Port}, LocalHost={LocalHost}, LocalPort={LocalPort}");

            if (OnPassiveClosed != null)
            {
                await Task.Run(async() =>
                {
                    await OnPassiveClosed(this);
                    isInactiveHandle = 0;
                });
            }
            else
            {
                isInactiveHandle = 0;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 关闭与服务端的连接
        /// </summary>
        /// <returns></returns>
        public async Task CloseAsync()
        {
            Status = ClientStatus.Closed;
            await BootstrapManager.CloseAsync(channelName);

            logger.LogDebug($"Client closed. Host={Host}, Port={Port}, LocalHost={LocalHost}, LocalPort={LocalPort}");
        }