MonoAppHost.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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 IConnectManager CreateConnectManager()
  35. {
  36. return new Emby.Server.Implementations.Library.ConnectManager();
  37. }
  38. //protected override ISyncManager CreateSyncManager()
  39. //{
  40. // return new SyncManager();
  41. //}
  42. protected override void RestartInternal()
  43. {
  44. MainClass.Restart();
  45. }
  46. protected override List<Assembly> GetAssembliesWithPartsInternal()
  47. {
  48. var list = new List<Assembly>();
  49. list.Add(GetType().Assembly);
  50. return list;
  51. }
  52. protected override void ShutdownInternal()
  53. {
  54. MainClass.Shutdown();
  55. }
  56. protected override bool SupportsDualModeSockets
  57. {
  58. get
  59. {
  60. return GetMonoVersion() >= new Version(4, 6);
  61. }
  62. }
  63. private static Version GetMonoVersion()
  64. {
  65. Type type = Type.GetType("Mono.Runtime");
  66. if (type != null)
  67. {
  68. MethodInfo displayName = type.GetTypeInfo().GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static);
  69. var displayNameValue = displayName.Invoke(null, null).ToString().Trim().Split(' ')[0];
  70. Version version;
  71. if (Version.TryParse(displayNameValue, out version))
  72. {
  73. return version;
  74. }
  75. }
  76. return new Version(1, 0);
  77. }
  78. protected override IHttpListener CreateHttpListener()
  79. {
  80. return new EmbyServer.SocketSharp.WebSocketSharpListener(LogManager.GetLogger("HttpServer"),
  81. Certificate,
  82. StreamHelper,
  83. TextEncoding,
  84. NetworkManager,
  85. SocketFactory,
  86. CryptographyProvider,
  87. SupportsDualModeSockets,
  88. FileSystemManager,
  89. EnvironmentInfo);
  90. }
  91. }
  92. }