Exemplo n.º 1
0
        public bool RemoveClientConnected <TRequest>(IMediatorClientConnected <TRequest> mediatorClientConnected)
        {
            bool result = false;

            lock (this._MediatorClientConnecteds) {
                result = this._MediatorClientConnecteds.Remove(mediatorClientConnected);
            }
            return(result);
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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());
        }