private async Task RunClientAsync(IDuplexPipe pipe, LightweightRpcEndPoint endPoint, IPrincipal?user) { var client = new ClientPipeline(pipe, this, endPoint, user, this.MaxRequestSize, this.MaxResponseSize, this.KeepSizeLimitedConnectionAlive); try { try { this.AddClient(client); await client.RunAsync().ContextFree(); } finally { await client.DisposeAsync().ContextFree(); } } finally { // Late removal of client (after dispose and wait) to avoid that shut down returns // before all clients have ended. Make sure that a client is not accidentally used // after dispose. this.RemoveClient(client); } }
public void Client_SendMessage_ServerShouldFireMessageReceivedEvent() { // Prepare _server = new ServerPipeline(); _client = new ClientPipeline(_server.ServerId); string message = null; var autoEvent = new AutoResetEvent(false); _server.MessageReceivedEvent += (sender, args) => { message = args.Message; autoEvent.Set(); }; _server.Start(); _client.Start(); // Act _client.SendMessage("Client's message"); // Verify autoEvent.WaitOne(); Assert.AreEqual("Client's message", message); }
private FaceClient(Uri baseUrl, string key, PipelineOptions options) { _options = options; _baseUrl = baseUrl; _keyHeader = new Header(s_keyHeaderName, key); _client = ClientPipeline.Create(options, SdkName, SdkVersion); }
public void Client_Disconnect_ServerShouldFireClientDisconnectedEvent() { // Prepare var isDisconnected = false; _server = new ServerPipeline(); _server.ClientDisconnectedEvent += (sender, args) => { isDisconnected = true; }; _server.Start(); Assert.IsFalse(isDisconnected); _client = new ClientPipeline(_server.ServerId); _client.Start(); // Act _client.Stop(); _client = null; Thread.Sleep(100); // Verify Assert.IsTrue(isDisconnected); }
private void AddClient(ClientPipeline client) { if (this.IsStopped) { throw new ObjectDisposedException(this.ToString()); } this.clients.TryAdd(client, client); }
public void TearDown() { if (_client != null) { _client.Stop(); _client = null; } if (_server != null) { _server.Stop(); _server = null; } }
public FileUri(string file, PipelineOptions options = default) { if (options == default) { _options = new PipelineOptions(); } else { _options = options; } Pipeline = ClientPipeline.Create(_options, SdkName, SdkVersion); _baseUri = new Uri(file); }
public void Basics() { var options = new PipelineOptions(); options.Transport = new MockTransport(500, 1); options.RetryPolicy = new CustomRetryPolicy(); options.LoggingPolicy = new TestLoggingPolicy(); options.Logger = new MockLogger(); var pipeline = ClientPipeline.Create(options, "test", "1.0.0"); using (var context = pipeline.CreateContext(options, cancellation: default)) { context.SetRequestLine(ServiceMethod.Get, new Uri("https://contoso.a.io")); pipeline.ProcessAsync(context).Wait(); Assert.AreEqual(1, context.Response.Status); var result = options.LoggingPolicy.ToString(); Assert.AreEqual("REQUEST: Get https://contoso.a.io/\nRESPONSE: 500\nREQUEST: Get https://contoso.a.io/\nRESPONSE: 1\n", result); } }
private void RemoveClient(ClientPipeline client) { this.clients.TryRemove(client, out _); }
public ConfigurationClient(string connectionString, PipelineOptions options) { _options = options; Pipeline = ClientPipeline.Create(_options, SdkName, SdkVersion); ParseConnectionString(connectionString, out _baseUri, out _credential, out _secret); }