public static async Task UsePooledChannelsAsync()
        {
            var allTasks = new List <Task>();

            foreach (var factoryAndPoolOfItsChannels in s_recyclablePooledFactoriesAndChannels.GetAllPooledInstances())
            {
                foreach (var channelWrapper in factoryAndPoolOfItsChannels.ObjectsPool.GetAllPooledInstances())
                {
                    allTasks.Add(UseChannelWrapperAsync(channelWrapper));
                }
            }
            await Task.WhenAll(allTasks);
        }
Beispiel #2
0
        public static async Task <int> UsePooledChannelsAsync()
        {
            var allTasks = new List <Task <int> >(32);

            foreach (var factoryAndPoolOfItsChannels in s_recyclablePooledFactoriesAndChannels.GetAllPooledInstances())
            {
                foreach (var channel in factoryAndPoolOfItsChannels.ObjectsPool.GetAllPooledInstances())
                {
                    allTasks.Add(s_test.UseAsyncChannel()(channel));
                }
            }
            await Task.WhenAll(allTasks);

            return(allTasks.Sum(t => t.Result));
        }
        public static async Task UsePooledChannelsAsync()
        {
            var allTasks = new List <Task>();

            foreach (var factoryAndPoolOfItsChannels in s_recyclablePooledFactoriesAndChannels.GetAllPooledInstances())
            {
                foreach (var channelWrapper in factoryAndPoolOfItsChannels.ObjectsPool.GetAllPooledInstances())
                {
                    allTasks.Add(s_CallChannelStats.CallAsyncFuncAndRecordStatsAsync(async() =>
                    {
                        if (channelWrapper.Channel != null)
                        {
                            await channelWrapper.OpenChannelOnceAsync();
                            await s_test.UseAsyncChannel()(channelWrapper.Channel);
                            //Console.WriteLine(s);
                        }
                    }));
                }
            }
            await Task.WhenAll(allTasks);
        }
        public static async Task UseChannelsInPooledFactoriesAndChannelsAsync()
        {
            var allTasks = new List <Task>();

            foreach (var factoryAndPoolOfItsChannels in s_pooledFactoriesAndChannels.GetAllPooledInstances())
            {
                foreach (var channel in factoryAndPoolOfItsChannels.ObjectsPool.GetAllPooledInstances())
                {
                    allTasks.Add(s_test.UseAsyncChannel()(channel));
                }
            }
            await Task.WhenAll(allTasks);
        }
        public static async Task CreateUseAndCloseChannelsAsync()
        {
            var allTasks = new List <Task>();

            foreach (var factory in s_pooledChannelFactories.GetAllPooledInstances())
            {
                ChannelType channel = s_test.CreateChannel(factory);
                if (channel != null)
                {
                    allTasks.Add(UseAndCloseChannelAsync(channel));
                }
            }
            await Task.WhenAll(allTasks);
        }
Beispiel #6
0
        public static async Task <int> CreateUseAndCloseChannelsAsync()
        {
            var allTasks = new List <Task <int> >(32);

            foreach (var factory in s_recyclablePooledChannelFactories.GetAllPooledInstances())
            {
                ChannelType channel = s_test.CreateChannel(factory);

                if (channel != null)
                {
                    allTasks.Add(UseAndCloseChannelAsync(channel));
                }
            }
            await Task.WhenAll(allTasks);

            return(allTasks.Sum(t => t.Result));
        }
Beispiel #7
0
        public static async Task <int> CreateFactoriesAndChannelsUseAllOnceCloseAllAsync()
        {
            PoolOfAsyncThings <FactoryAndPoolOfItsAsyncObjects <ChannelFactory <ChannelType>, ChannelType> > oneTimeAsyncThing = null;
            var allTasksFromOneTimeAsyncThing = new List <Task <int> >();

            try
            {
                oneTimeAsyncThing = new PoolOfAsyncThings <FactoryAndPoolOfItsAsyncObjects <ChannelFactory <ChannelType>, ChannelType> >(
                    maxSize: s_test.TestParameters.MaxPooledFactories, // # of pooled FactoryAndPoolOfItsObjects
                    createInstance: () => new FactoryAndPoolOfItsAsyncObjects <ChannelFactory <ChannelType>, ChannelType>(
                        createFactoryInstance: () =>
                        s_test.CreateChannelFactory(),
                        destroyFactoryInstanceAsync: async(chf) =>
                        await s_test.CloseFactoryAsync(chf),
                        maxPooledObjects: s_test.TestParameters.MaxPooledChannels, // # of pooled channels within each pooled FactoryAndPoolOfItsObjects
                        createObject: (chf) =>
                        s_test.CreateChannel(chf),
                        destroyObjectAsync: async(ch) =>
                        await s_test.CloseChannelAsync(ch),
                        validateObjectInstance: s_test.ValidateChannel),
                    destroyInstanceAsync: (fapoiao) => fapoiao.DestroyAsync(),
                    instanceValidator: (fapoiao) => s_test.ValidateFactory(fapoiao.Factory));

                foreach (var factoryAndPoolOfItsChannels in oneTimeAsyncThing.GetAllPooledInstances())
                {
                    foreach (var channel in factoryAndPoolOfItsChannels.ObjectsPool.GetAllPooledInstances())
                    {
                        allTasksFromOneTimeAsyncThing.Add(s_test.UseAsyncChannel()(channel));
                    }
                }
            }
            finally
            {
                if (oneTimeAsyncThing != null)
                {
                    await Task.WhenAll(allTasksFromOneTimeAsyncThing);

                    await oneTimeAsyncThing.DestoryAllPooledInstancesAsync();
                }
            }
            return(allTasksFromOneTimeAsyncThing.Sum(t => t.Result));
        }