/// <summary>
        /// Called when socket is disconnected internally
        /// </summary>
        internal void DisconnectInternal(HazelInternalErrors error, string reason)
        {
            var handler = this.OnInternalDisconnect;

            if (handler != null)
            {
                MessageWriter messageToRemote = handler(error);
                if (messageToRemote != null)
                {
                    try
                    {
                        Disconnect(reason, messageToRemote);
                    }
                    finally
                    {
                        messageToRemote.Recycle();
                    }
                }
                else
                {
                    Disconnect(reason);
                }
            }
            else
            {
                Disconnect(reason);
            }
        }
示例#2
0
        /// <summary>
        /// Called when socket is disconnected internally
        /// </summary>
        internal async ValueTask DisconnectInternal(HazelInternalErrors error, string reason)
        {
            Func <HazelInternalErrors, MessageWriter> handler = this.OnInternalDisconnect;

            if (handler != null)
            {
                MessageWriter messageToRemote = handler(error);
                if (messageToRemote != null)
                {
                    try
                    {
                        await Disconnect(reason, messageToRemote);
                    }
                    finally
                    {
                        messageToRemote.Recycle();
                    }
                }
                else
                {
                    await Disconnect(reason);
                }
            }
            else
            {
                await Disconnect(reason);
            }
        }