using System; using System.IO.Pipelines; using System.Threading.Channels; using System.Threading.Tasks; using Microsoft.AspNetCore.Sockets; using Microsoft.AspNetCore.Sockets.Client; namespace Microsoft.AspNetCore.SignalR.Client.Tests { public class TestTransport : ITransport { private readonly Func _stopHandler; private readonly Func _startHandler; public TransferMode? Mode { get; } public IDuplexPipe Application { get; private set; } public TestTransport(Func onTransportStop = null, Func onTransportStart = null, TransferMode transferMode = TransferMode.Text) { _stopHandler = onTransportStop ?? new Func(() => Task.CompletedTask); _startHandler = onTransportStart ?? new Func(() => Task.CompletedTask); Mode = transferMode; } public Task StartAsync(Uri url, IDuplexPipe application, TransferMode requestedTransferMode, IConnection connection) { Application = application; return _startHandler(); } public async Task StopAsync() { await _stopHandler(); Application.Output.Complete(); } } }