MsmqIntegrationMessagePool.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. //------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //------------------------------------------------------------
  4. namespace System.ServiceModel.MsmqIntegration
  5. {
  6. using System.ServiceModel.Channels;
  7. sealed class MsmqIntegrationMessagePool
  8. : SynchronizedDisposablePool<MsmqIntegrationInputMessage>, IMsmqMessagePool
  9. {
  10. int maxPoolSize;
  11. internal MsmqIntegrationMessagePool(int maxPoolSize)
  12. : base(maxPoolSize)
  13. {
  14. this.maxPoolSize = maxPoolSize;
  15. }
  16. MsmqInputMessage IMsmqMessagePool.TakeMessage()
  17. {
  18. MsmqIntegrationInputMessage message = this.Take();
  19. if (null == message)
  20. message = new MsmqIntegrationInputMessage();
  21. return message;
  22. }
  23. void IMsmqMessagePool.ReturnMessage(MsmqInputMessage message)
  24. {
  25. if (! this.Return(message as MsmqIntegrationInputMessage))
  26. {
  27. MsmqDiagnostics.PoolFull(this.maxPoolSize);
  28. message.Dispose();
  29. }
  30. }
  31. }
  32. }