Exemple #1
0
 public static void UsePooledChannels()
 {
     foreach (var factoryAndPoolOfItsChannels in s_recyclablePooledFactoriesAndChannels.GetAllPooledInstances())
     {
         foreach (var channel in factoryAndPoolOfItsChannels.ObjectsPool.GetAllPooledInstances())
         {
             s_CallChannelStats.CallActionAndRecordStats(() =>
             {
                 channel.GetData(44);
             });
         }
     }
 }
Exemple #2
0
 public static void CreateFactoriesAndChannelsUseAllOnceCloseAll()
 {
     using (var theOneTimeThing = new PoolOfThings <FactoryAndPoolOfItsObjects <ChannelFactory <WcfService1.IService1>, WcfService1.IService1> >(
                maxSize: 3, // # of pooled FactoryAndPoolOfItsObjects
                createInstance: () => new FactoryAndPoolOfItsObjects <ChannelFactory <WcfService1.IService1>, WcfService1.IService1>(
                    createFactoryInstance: () =>
                    TestHelpers.CreateChannelFactory <WcfService1.IService1>(TestHelpers.CreateEndPointAddress(), TestHelpers.CreateBinding()),
                    destroyFactoryInstance: (chf) =>
                    s_CloseFactoryStats.CallActionAndRecordStats(() => TestHelpers.CloseFactory(chf)),
                    maxPooledObjects: 3, // # of pooled channels within each pooled FactoryAndPoolOfItsObjects
                    createObject: (chf) =>
                    s_CreateChannelStats.CallFuncAndRecordStats(TestHelpers.CreateChannel, chf),
                    destroyObject: (ch) =>
                    s_CloseChannelStats.CallActionAndRecordStats(() => TestHelpers.CloseChannel(ch))
                    ),
                destroyInstance: (_fapoic) => _fapoic.Destroy()))
     {
         foreach (var factoryAndPoolOfItsChannels in theOneTimeThing.GetAllPooledInstances())
         {
             foreach (var channel in factoryAndPoolOfItsChannels.ObjectsPool.GetAllPooledInstances())
             {
                 s_CallChannelStats.CallActionAndRecordStats(() =>
                 {
                     channel.GetData(44);
                 });
             }
         }
     }
 }
Exemple #3
0
        public static void CreateUseAndCloseChannels()
        {
            foreach (var factory in s_recyclablePooledChannelFactories.GetAllPooledInstances())
            {
                WcfService1.IService1 channel = null;
                s_CreateChannelStats.CallActionAndRecordStats(() =>
                                                              channel = factory.CreateChannel());

                if (channel != null)
                {
                    s_CallChannelStats.CallActionAndRecordStats(() =>
                                                                channel.GetData(1));

                    s_CloseChannelStats.CallActionAndRecordStats(() =>
                    {
                        (channel as IClientChannel).Close();
                    });
                }
            }
        }