ResourcePool.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using System;
  2. using System.Threading;
  3. namespace MediaBrowser.Common.Kernel
  4. {
  5. /// <summary>
  6. /// This is just a collection of semaphores to control the number of concurrent executions of various resources
  7. /// </summary>
  8. public class ResourcePool : IDisposable
  9. {
  10. /// <summary>
  11. /// You tube
  12. /// </summary>
  13. public readonly SemaphoreSlim YouTube = new SemaphoreSlim(5, 5);
  14. /// <summary>
  15. /// The trakt
  16. /// </summary>
  17. public readonly SemaphoreSlim Trakt = new SemaphoreSlim(5, 5);
  18. /// <summary>
  19. /// The tv db
  20. /// </summary>
  21. public readonly SemaphoreSlim TvDb = new SemaphoreSlim(5, 5);
  22. /// <summary>
  23. /// The movie db
  24. /// </summary>
  25. public readonly SemaphoreSlim MovieDb = new SemaphoreSlim(5, 5);
  26. /// <summary>
  27. /// The fan art
  28. /// </summary>
  29. public readonly SemaphoreSlim FanArt = new SemaphoreSlim(5, 5);
  30. /// <summary>
  31. /// The mb
  32. /// </summary>
  33. public readonly SemaphoreSlim Mb = new SemaphoreSlim(5, 5);
  34. /// <summary>
  35. /// The mb
  36. /// </summary>
  37. public readonly SemaphoreSlim Lastfm = new SemaphoreSlim(5, 5);
  38. /// <summary>
  39. /// Apple doesn't seem to like too many simulataneous requests.
  40. /// </summary>
  41. public readonly SemaphoreSlim AppleTrailerVideos = new SemaphoreSlim(1, 1);
  42. /// <summary>
  43. /// The apple trailer images
  44. /// </summary>
  45. public readonly SemaphoreSlim AppleTrailerImages = new SemaphoreSlim(1, 1);
  46. /// <summary>
  47. /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
  48. /// </summary>
  49. public void Dispose()
  50. {
  51. Dispose(true);
  52. GC.SuppressFinalize(this);
  53. }
  54. /// <summary>
  55. /// Releases unmanaged and - optionally - managed resources.
  56. /// </summary>
  57. /// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
  58. protected virtual void Dispose(bool dispose)
  59. {
  60. if (dispose)
  61. {
  62. YouTube.Dispose();
  63. Trakt.Dispose();
  64. TvDb.Dispose();
  65. MovieDb.Dispose();
  66. FanArt.Dispose();
  67. Mb.Dispose();
  68. AppleTrailerVideos.Dispose();
  69. AppleTrailerImages.Dispose();
  70. }
  71. }
  72. }
  73. }