2
0

MonoAppHost.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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 MediaBrowser.Model.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, ILogManager logManager, StartupOptions options, IFileSystem fileSystem, IPowerManagement powerManagement, string releaseAssetFilename, IEnvironmentInfo environmentInfo, MediaBrowser.Controller.Drawing.IImageEncoder imageEncoder, ISystemEvents systemEvents, MediaBrowser.Common.Net.INetworkManager networkManager) : base(applicationPaths, logManager, options, fileSystem, powerManagement, releaseAssetFilename, environmentInfo, imageEncoder, systemEvents, networkManager)
  24. {
  25. }
  26. public override bool CanSelfRestart
  27. {
  28. get
  29. {
  30. // A restart script must be provided
  31. return StartupOptions.ContainsOption("-restartpath");
  32. }
  33. }
  34. //protected override ISyncManager CreateSyncManager()
  35. //{
  36. // return new SyncManager();
  37. //}
  38. protected override void RestartInternal()
  39. {
  40. MainClass.Restart();
  41. }
  42. protected override List<Assembly> GetAssembliesWithPartsInternal()
  43. {
  44. var list = new List<Assembly>();
  45. list.Add(GetType().Assembly);
  46. return list;
  47. }
  48. protected override void ShutdownInternal()
  49. {
  50. MainClass.Shutdown();
  51. }
  52. protected override bool SupportsDualModeSockets
  53. {
  54. get
  55. {
  56. return GetMonoVersion() >= new Version(4, 6);
  57. }
  58. }
  59. private static Version GetMonoVersion()
  60. {
  61. Type type = Type.GetType("Mono.Runtime");
  62. if (type != null)
  63. {
  64. MethodInfo displayName = type.GetTypeInfo().GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static);
  65. var displayNameValue = displayName.Invoke(null, null).ToString().Trim().Split(' ')[0];
  66. Version version;
  67. if (Version.TryParse(displayNameValue, out version))
  68. {
  69. return version;
  70. }
  71. }
  72. return new Version(1, 0);
  73. }
  74. protected override IHttpListener CreateHttpListener()
  75. {
  76. return new EmbyServer.SocketSharp.WebSocketSharpListener(LogManager.GetLogger("HttpServer"),
  77. Certificate,
  78. StreamHelper,
  79. TextEncoding,
  80. NetworkManager,
  81. SocketFactory,
  82. CryptographyProvider,
  83. SupportsDualModeSockets,
  84. FileSystemManager,
  85. EnvironmentInfo);
  86. }
  87. }
  88. }