Example #1
0
        private async Task CloseAsync(Exception e, bool awaitAll)
        {
            if (!IsOpen)
            {
                return;
            }

            foreach (OwnTcpServerConnection connection in connections.ToArray())
            {
                await CloseConnection(connection).ConfigureAwait(false);
            }

            isOpen = false;
            listener.Stop();

            await processQueue.End();

            Task raiseTask = RaiseDisconnected();

            if (awaitAll)
            {
                await raiseTask.ConfigureAwait(false);
            }

            async Task RaiseDisconnected()
            {
                if (openTask != null)
                {
                    await openTask.ConfigureAwait(false);
                }

                if (e != null)
                {
                }
                Disconnected?.Invoke(this, new DisconnectedEventArgs(e == null, e));
            }
        }