public async Task <TestClientServer <TService> > SetupTestClientServer <TService>( ILayerStackProvider serviceLayerStackProvider = null, ILayerStackProvider clientLayerStackProvider = null ) where TService : class, IService, new() { var testService = new TService(); EpoxyTransport serviceTransport = new EpoxyTransportBuilder() .SetLayerStackProvider(serviceLayerStackProvider) .Construct(); listener = serviceTransport.MakeListener(new IPEndPoint(IPAddress.Loopback, EpoxyTransport.DefaultInsecurePort)); listener.AddService(testService); await listener.StartAsync(); EpoxyTransport clientTransport = new EpoxyTransportBuilder() .SetLayerStackProvider(clientLayerStackProvider) .Construct(); EpoxyConnection clientConnection = await clientTransport.ConnectToAsync("epoxy://127.0.0.1"); return(new TestClientServer <TService> { Service = testService, ServiceTransport = serviceTransport, Listener = listener, ClientConnection = clientConnection, ClientTransport = clientTransport }); }
public EpoxyTransport( ILayerStackProvider layerStackProvider, Func <string, Task <IPAddress> > resolver, EpoxyServerTlsConfig serverTlsConfig, EpoxyClientTlsConfig clientTlsConfig, TimeoutConfig timeoutConfig, ILogSink logSink, bool enableDebugLogs, IMetricsSink metricsSink) { // Layer stack provider may be null this.layerStackProvider = layerStackProvider; // Always need a resolver, so substitute in default if given null this.resolver = resolver ?? ResolveViaDnsAsync; // may be null - indicates no TLS for listeners this.serverTlsConfig = serverTlsConfig; // Client-side TLS is determined by how the connection is // established, so we substitute in the Default TLS config if we // happened to get null this.clientTlsConfig = clientTlsConfig ?? EpoxyClientTlsConfig.Default; this.timeoutConfig = timeoutConfig; // Log sink may be null logger = new Logger(logSink, enableDebugLogs); // Metrics sink may be null metrics = new Metrics(metricsSink); connections = new CleanupCollection <EpoxyConnection>(); listeners = new CleanupCollection <EpoxyListener>(); }
private static async Task <PingPongProxy <EpoxyConnection> > SetupProxyAsync(ILayerStackProvider layerStack) { var transport = new EpoxyTransportBuilder().SetLayerStackProvider(layerStack).Construct(); var endpoint = new EpoxyTransport.Endpoint(IPAddress.Loopback.ToString(), 25188, false); var conn = await transport.ConnectToAsync(endpoint, CancellationToken.None); return(new PingPongProxy <EpoxyConnection>(conn)); }
public EpoxyTransport( ILayerStackProvider layerStackProvider, ILogSink logSink, bool enableDebugLogs, IMetricsSink metricsSink) { // Layer stack provider may be null this.layerStackProvider = layerStackProvider; // Log sink may be null logger = new Logger(logSink, enableDebugLogs); // Metrics sink may be null metrics = new Metrics(metricsSink); }
private static async Task SetupAsync(ILayerStackProvider layerStackProvider) { var endpoint = new IPEndPoint(IPAddress.Loopback, (int)PingConstants.Port); EpoxyTransport transport = new EpoxyTransportBuilder().SetLayerStackProvider(layerStackProvider).Construct(); EpoxyListener pingPongListener = transport.MakeListener(endpoint); var pingPongService = new PingPongService(); pingPongListener.AddService(pingPongService); await pingPongListener.StartAsync(); }
public SimpleInMemTransport(ILayerStackProvider layerStackProvider, Logger logger, Metrics metrics) { this.layerStackProvider = layerStackProvider; this.logger = logger; this.metrics = metrics; }
public static async Task <TestClientServer <TService> > SetupTestClientServer <TService>(ILayerStackProvider serviceLayerStackProvider = null, ILayerStackProvider clientLayerStackProvider = null) where TService : class, IService, new() { var testService = new TService(); EpoxyTransport serviceTransport = new EpoxyTransportBuilder() .SetLayerStackProvider(serviceLayerStackProvider) .Construct(); EpoxyListener listener = serviceTransport.MakeListener(new IPEndPoint(IPAddress.Loopback, 0)); listener.AddService(testService); await listener.StartAsync(); EpoxyTransport clientTransport = new EpoxyTransportBuilder() // some tests rely on the use of DebugExceptionHandler to assert things about the error message .SetLayerStackProvider(clientLayerStackProvider) .Construct(); EpoxyConnection clientConnection = await clientTransport.ConnectToAsync(listener.ListenEndpoint); return(new TestClientServer <TService> { Service = testService, ServiceTransport = serviceTransport, Listener = listener, ClientConnection = clientConnection, ClientTransport = clientTransport }); }
/// <summary> /// Set the layer stack. /// </summary> /// <param name="layerStackProvider">The layer stack provider. May be null</param> /// <returns>The builder.</returns> /// <remarks> /// The layer stack provider supplies the set of layers to be used /// by the built transport. May be null. /// </remarks> public virtual TransportBuilder <TTransport> SetLayerStackProvider(ILayerStackProvider layerStackProvider) { this.LayerStackProvider = layerStackProvider; return(this); }