MonoAppHost.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Reflection;
  4. using System.Threading;
  5. using System.Threading.Tasks;
  6. //using Emby.Server.CinemaMode;
  7. using Emby.Server.Implementations;
  8. using Emby.Server.Implementations.Library;
  9. using Emby.Server.Implementations.HttpServer;
  10. using Emby.Server.Implementations.Net;
  11. using MediaBrowser.Controller.Connect;
  12. using MediaBrowser.Controller.Net;
  13. using MediaBrowser.Controller.Sync;
  14. using IsoMounter;
  15. using MediaBrowser.Model.IO;
  16. using Microsoft.Extensions.Logging;
  17. using MediaBrowser.Model.Services;
  18. using MediaBrowser.Model.System;
  19. namespace MediaBrowser.Server.Mono
  20. {
  21. public class MonoAppHost : ApplicationHost
  22. {
  23. public MonoAppHost(ServerApplicationPaths applicationPaths, ILoggerFactory loggerFactory, StartupOptions options, IFileSystem fileSystem, IPowerManagement powerManagement, string releaseAssetFilename, IEnvironmentInfo environmentInfo, MediaBrowser.Controller.Drawing.IImageEncoder imageEncoder, ISystemEvents systemEvents, MediaBrowser.Common.Net.INetworkManager networkManager)
  24. : base(applicationPaths, loggerFactory, options, fileSystem, powerManagement, releaseAssetFilename, environmentInfo, imageEncoder, systemEvents, networkManager)
  25. {
  26. }
  27. public override bool CanSelfRestart
  28. {
  29. get
  30. {
  31. // A restart script must be provided
  32. return StartupOptions.ContainsOption("-restartpath");
  33. }
  34. }
  35. //protected override ISyncManager CreateSyncManager()
  36. //{
  37. // return new SyncManager();
  38. //}
  39. protected override void RestartInternal()
  40. {
  41. MainClass.Restart();
  42. }
  43. protected override List<Assembly> GetAssembliesWithPartsInternal()
  44. {
  45. var list = new List<Assembly>();
  46. list.Add(GetType().Assembly);
  47. return list;
  48. }
  49. protected override void ShutdownInternal()
  50. {
  51. MainClass.Shutdown();
  52. }
  53. protected override bool SupportsDualModeSockets
  54. {
  55. get
  56. {
  57. return GetMonoVersion() >= new Version(4, 6);
  58. }
  59. }
  60. private static Version GetMonoVersion()
  61. {
  62. Type type = Type.GetType("Mono.Runtime");
  63. if (type != null)
  64. {
  65. MethodInfo displayName = type.GetTypeInfo().GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static);
  66. var displayNameValue = displayName.Invoke(null, null).ToString().Trim().Split(' ')[0];
  67. Version version;
  68. if (Version.TryParse(displayNameValue, out version))
  69. {
  70. return version;
  71. }
  72. }
  73. return new Version(1, 0);
  74. }
  75. protected override IHttpListener CreateHttpListener()
  76. {
  77. return new EmbyServer.SocketSharp.WebSocketSharpListener(
  78. Logger,
  79. Certificate,
  80. StreamHelper,
  81. TextEncoding,
  82. NetworkManager,
  83. SocketFactory,
  84. CryptographyProvider,
  85. SupportsDualModeSockets,
  86. FileSystemManager,
  87. EnvironmentInfo);
  88. }
  89. }
  90. }