ResourcePool.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using System.Threading;
  3. namespace MediaBrowser.Controller.Library
  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. /// Apple doesn't seem to like too many simulataneous requests.
  36. /// </summary>
  37. public readonly SemaphoreSlim AppleTrailerVideos = new SemaphoreSlim(1, 1);
  38. /// <summary>
  39. /// The apple trailer images
  40. /// </summary>
  41. public readonly SemaphoreSlim AppleTrailerImages = new SemaphoreSlim(1, 1);
  42. /// <summary>
  43. /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
  44. /// </summary>
  45. public void Dispose()
  46. {
  47. Dispose(true);
  48. GC.SuppressFinalize(this);
  49. }
  50. /// <summary>
  51. /// Releases unmanaged and - optionally - managed resources.
  52. /// </summary>
  53. /// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
  54. protected virtual void Dispose(bool dispose)
  55. {
  56. if (dispose)
  57. {
  58. YouTube.Dispose();
  59. Trakt.Dispose();
  60. TvDb.Dispose();
  61. MovieDb.Dispose();
  62. FanArt.Dispose();
  63. Mb.Dispose();
  64. AppleTrailerVideos.Dispose();
  65. AppleTrailerImages.Dispose();
  66. }
  67. }
  68. }
  69. }