public bool RemoveClientConnected <TRequest>(IMediatorClientConnected <TRequest> mediatorClientConnected) { bool result = false; lock (this._MediatorClientConnecteds) { result = this._MediatorClientConnecteds.Remove(mediatorClientConnected); } return(result); }
internal bool TryGetMediatorClientConnected(ActivityId activityId, [MaybeNullWhen(false)] out IMediatorClientConnected result) { lock (this._MediatorClientConnecteds) { for (int idx = 0; idx < this._MediatorClientConnecteds.Count; idx++) { var item = this._MediatorClientConnecteds[idx]; var activityContext = item.GetActivityContext(); if (activityContext is object && activityContext.ActivityId.Equals(activityId)) { result = item; #warning todo return(true); } } } { result = null; return(false); } }
public bool AddClientConnected <TRequest>( IMediatorClientConnected <TRequest> mediatorClientConnected ) { bool result = true; lock (this._MediatorClientConnecteds) { foreach (var mcc in this._MediatorClientConnecteds) { if (ReferenceEquals(mcc, mediatorClientConnected)) { result = false; } } if (result) { this._MediatorClientConnecteds.Add(mediatorClientConnected); } } return(result); }
public async Task Medaitor_3ConnectAsync() { var servicesWebApp = new Microsoft.Extensions.DependencyInjection.ServiceCollection(); var servicesMediator = new Microsoft.Extensions.DependencyInjection.ServiceCollection(); servicesWebApp.AddLatransMedaitor() .AddActivityHandler <TestActivityHandler1>() .AddActivityHandler <TestActivityHandler2>() .Build(); IMediatorClientConnected <TestRequest1> connectedClient = null; MediatorClientConnected <TestRequest1, TestResponse1> testConnectedClient = null; using (var serviceProviderMediator = servicesMediator.BuildServiceProvider()) { using (var serviceProviderWebApp = servicesWebApp.BuildServiceProvider()) { using (var scopeWebApp = serviceProviderWebApp.CreateScope()) { var scopedProviderWebApp = scopeWebApp.ServiceProvider; var medaitorClient = scopedProviderWebApp.GetRequiredService <IMediatorClientFactory>().GetMedaitorClient(); var request = new TestRequest1() { A = 6, B = 7 }; connectedClient = await medaitorClient.ConnectAndSendAsync( ActivityId.NewId(), request, null, CancellationToken.None); Assert.False(connectedClient.GetActivityContext().IsDisposed); Assert.NotNull(connectedClient); testConnectedClient = (MediatorClientConnected <TestRequest1, TestResponse1>)connectedClient; Assert.False(testConnectedClient.IsDisposed()); } } } Assert.True(testConnectedClient.IsDisposed()); }