ConfigManager.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. using FISLib.LiveVideo;
  2. using System.Linq;
  3. using Vinno.FIS.Sonopost.Common;
  4. using Vinno.FIS.Sonopost.Managers.Interfaces;
  5. using Vinno.FIS.Sonopost.Settings;
  6. using Vinno.FIS.Sonopost.Settings.Config;
  7. using Vinno.IUS.Common.Log;
  8. namespace Vinno.FIS.Sonopost.Managers
  9. {
  10. internal class ConfigManager : SonopostManager, IConfigManager
  11. {
  12. private ILiveVideoManager _liveVideoManager;
  13. private readonly object _locker = new object();
  14. public string VCloudServerAddress { get; private set; }
  15. public int VCloudServerPort { get; private set; }
  16. public string VCloudServerName { get; private set; }
  17. public ConfigManager()
  18. {
  19. InitServerConfig();
  20. }
  21. public void Save()
  22. {
  23. lock (_locker)
  24. {
  25. SonopostSystemSettings.Instance.Save();
  26. SonopostUserDefinedSettings.Instance.Save();
  27. }
  28. }
  29. public void SwitchVCloudServer(string address, int port, string vcloudServerName)
  30. {
  31. VCloudServerAddress = address;
  32. VCloudServerPort = port;
  33. VCloudServerName = vcloudServerName;
  34. }
  35. /// <summary>
  36. /// 刷新默认服务器
  37. /// </summary>
  38. /// <param name="server"></param>
  39. public void RefreshFlyinsonoServer(ServerInfoSetting newFlyinsonoServer)
  40. {
  41. if (VCloudServerName == SonopostConstants.FlyinsonoServerName)
  42. {
  43. VCloudServerAddress = newFlyinsonoServer.Host;
  44. VCloudServerPort = newFlyinsonoServer.Port;
  45. VCloudServerName = newFlyinsonoServer.DisplayName;
  46. }
  47. }
  48. public void SaveVCloudServer()
  49. {
  50. var existItem = SonopostUserDefinedSettings.Instance.ServerSetting.Servers.FirstOrDefault(x => x.Host == VCloudServerAddress && x.Port == VCloudServerPort && x.DisplayName == VCloudServerName);
  51. if (existItem != null)
  52. {
  53. SonopostUserDefinedSettings.Instance.ServerSetting.DefaultServer = existItem;
  54. }
  55. else
  56. {
  57. var serverInfo = new ServerInfoSetting(VCloudServerAddress, VCloudServerPort, false);
  58. SonopostUserDefinedSettings.Instance.ServerSetting.DefaultServer = serverInfo;
  59. SonopostUserDefinedSettings.Instance.ServerSetting.Servers.Add(serverInfo);
  60. }
  61. if (_liveVideoManager == null)
  62. {
  63. _liveVideoManager = AppManager.Instance.GetManager<ILiveVideoManager>();
  64. }
  65. var mainConfig = SonopostUserDefinedSettings.Instance.HardwareSetting.VideoDeviceInfoList.FirstOrDefault(x => x.Category == FISLiveChannelCategory.Main);
  66. if (mainConfig != null)
  67. {
  68. if (!string.IsNullOrWhiteSpace(mainConfig.Brand))
  69. {
  70. var brandList = _liveVideoManager.GetBrandList();
  71. if (brandList == null || brandList.Count == 0 || !brandList.Contains(mainConfig.Brand))
  72. {
  73. mainConfig.Brand = null;
  74. mainConfig.Model = null;
  75. }
  76. else if (!string.IsNullOrWhiteSpace(mainConfig.Model))
  77. {
  78. var modelList = _liveVideoManager.GetModelList(mainConfig.Brand);
  79. if (modelList == null || modelList.Count == 0 || !modelList.Contains(mainConfig.Model))
  80. {
  81. mainConfig.Model = null;
  82. }
  83. }
  84. }
  85. }
  86. Save();
  87. }
  88. private void InitServerConfig()
  89. {
  90. var defaultServer = SonopostUserDefinedSettings.Instance.ServerSetting.DefaultServer;
  91. VCloudServerAddress = defaultServer.Host;
  92. VCloudServerPort = defaultServer.Port;
  93. VCloudServerName = defaultServer.DisplayName;
  94. Logger.WriteLineInfo($"ConfigManager InitServerConfig:ServerAddress:{VCloudServerAddress},VCloudServerPort:{VCloudServerPort},VCloudServerName:{VCloudServerName}");
  95. }
  96. }
  97. }