System.Net.Security.Tests.DummyTcpServer.OnReceive C# (CSharp) Method

OnReceive() private method

private OnReceive ( IAsyncResult result ) : void
result IAsyncResult
return void
        private void OnReceive(IAsyncResult result)
        {
            ClientState state = (ClientState)result.AsyncState;

            try
            {
                int bytesReceived = state.Stream.EndRead(result);
                if (bytesReceived == 0)
                {
                    state.Dispose();
                    return;
                }

                if (_receiveCallback != null)
                {
                    _receiveCallback(state.ReceiveBuffer, bytesReceived, state.Stream);
                }
                else
                {
                    // Echo back what we received
                    state.Stream.Write(state.ReceiveBuffer, 0, bytesReceived);
                }

                // Read more from client (asynchronous)
                state.Stream.BeginRead(state.ReceiveBuffer, 0, state.ReceiveBuffer.Length, OnReceive, state);
            }
            catch (IOException)
            {
                state.Dispose();
                return;
            }
            catch (SocketException)
            {
                state.Dispose();
                return;
            }
            catch (ObjectDisposedException)
            {
                state.Dispose();
                return;
            }
            catch (InvalidOperationException e)
            {
                throw new InvalidOperationException(
                    $"Exception in {nameof(DummyTcpServer)} created with stack: {_creationStack}",
                    e);
            }
        }