/// <summary> /// 注册组件 /// </summary> /// <param name="baseApi"></param> private static void RegisterComponent(IBaseApi baseApi) { SLogger.Info(nameof(OpenFx), "Registering componnets"); //最基础的组件 Lake.RegisterSingleton <IBaseApi>(baseApi); Lake.RegisterSingleton <ILake>(Lake); SLogger.Info(nameof(OpenFx), "Base components are registered"); //管理层面的组件 Lake.RegisterSingleton <ILibsManager, DreamLibManager>(); Lake.RegisterSingleton <IExtensionTaskManager, ExtensionTaskManagerV2>(); SLogger.Info(nameof(OpenFx), "Management components are registered"); //API层面的组件 Lake.RegisterSingleton <IMd5, Md5Impl>(); Lake.RegisterSingleton <ISoundService, SoundImpl>(); Lake.RegisterSingleton <IEmbeddedFileManager, EmbeddedFileManagerImpl>(); Lake.RegisterSingleton <IOperatingSystemAPI, OSImpl>(); Lake.RegisterSingleton <IUx, UxImpl>(); Lake.RegisterSingleton <IResourcesManager, ResManagerImpl>(); Lake.RegisterSingleton <IAppManager, AppManagerImpl>(); Lake.RegisterSingleton <IDeviceManager, DeviceManager>(); Lake.RegisterSingleton <ICompApi, CompImpl>(); Lake.RegisterSingleton <INotificationManager, NotificationManager>(); Lake.RegisterSingleton <IXCardsManager, XCardsManager>(); Lake.RegisterSingleton <IStorageManager, StorageManager>(); Lake.RegisterSingleton <IOpenFxManager, OpenFxManagerImpl>(); SLogger.Info(nameof(OpenFx), "Open API components are registered"); //一些特殊的实时构建组件 Lake.Register <ICommandExecutor, HestExecutor>(); Lake.Register <IDevice>(() => Lake.Get <IBaseApi>().SelectedDevice); Lake.Register <ILeafUI>(() => Lake.Get <IBaseApi>().NewLeafUI()); }
public void EntryPoint(IDevice device, ILeafUI ui, IStorageManager storageManager, IAppManager app, ICommandExecutor executor) { using (ui) { //初始化LeafUI并展示 ui.Title = this.GetName(); ui.Icon = this.GetIconBytes(); executor.OutputReceived += (s, e) => { ui.WriteOutput(e.Text); SLogger <EScreenShoter> .Info(e.Text); }; ui.Closing += (s, e) => { executor.Dispose(); return(true); }; ui.Show(); var screencap = new ScreenCap(device, executor, storageManager.CacheDirectory.FullName); var file = screencap.Cap(); ui.WriteLine(file.FullName); ShowOnUI(app, file.FullName); //显示出来了,进度窗也没啥用了,直接关闭 //ui.Finish(); ui.Shutdown(); } }
public void Inject() { var injectables = GetInjectables(instance.GetType()); foreach (var injectable in injectables) { try { object?value = GetValue(injectable.Attr.Id, injectable.ValueType !); #pragma warning disable CS8604 // 可能的 null 引用参数。 injectable.Set(instance, value); #pragma warning restore CS8604 // 可能的 null 引用参数。 } catch (IdNotFoundException) { SLogger <DependenciesInjector> .Info($"Can not found component: {(injectable.Attr.Id ?? injectable.ValueType?.Name)}. Injecting of {instance.GetType().FullName}.{injectable.Name} is skipped"); } catch (TypeNotFoundException) { SLogger <DependenciesInjector> .Info($"Can not found component: {(injectable.Attr.Id ?? injectable.ValueType?.Name)}. Injecting of {instance.GetType().FullName}.{injectable.Name} is skipped"); } catch (Exception e) { SLogger <DependenciesInjector> .Warn($"Can't inject proerty:{instance.GetType().FullName}.{injectable.Name}", e); } } }
public void Do() { List <Type> componentsResult = new List <Type>(); foreach (var assembly in assemblies) { var components = from type in assembly.GetTypes() where type.FullName?.StartsWith(prefix) ?? false where type.GetCustomAttribute <ComponentAttribute>() != null select type; componentsResult.AddRange(components); } SLogger <ClassComponentsLoader> .Info($"Found {componentsResult.Count()} class component"); componentsResult.ForEach(t => { try { ClassComponentRegister.Register(target, t); } catch (Exception e) { SLogger <ClassComponentsLoader> .Exception(e); } }); }
protected override void InnerExcute(IJobExecutionContext context) { try { SLogger.Info(string.Format("{0}: Starting Push question to QnA job", JobFriendlyName)); var lastRunTime = SystemReader.GetLastPushQnAJobRunTime(); var lstQuestion = _qnaService.GetQnAByDate(lastRunTime); // call stand alone to execute QnA var data = new PushLatestQnA { ListQuestionAndAnswers = lstQuestion.ToList() }; ApiHelper.PostAsyncNoEncrypt(WebApiConstant.XoomPushQuestionStandAloneEndPoint, data).GetAwaiter().GetResult(); SLogger.Info(string.Format("{0} : - End Push question to QnA job", JobFriendlyName)); SystemReader.SetLastPushQnAJobRunTime(DateTime.Now); } catch (Exception ex) { SLogger.Error(string.Format("{0}: InnerExcute. Push question to QnA job", JobFriendlyName), ex); } }
public void Execute(IJobExecutionContext context) { JobFriendlyName = string.IsNullOrWhiteSpace(JobFriendlyName) ? Guid.NewGuid().ToString() : JobFriendlyName; ConfigurationManager.RefreshSection("appSettings"); try { SLogger.Info(string.Format("Job {0} starts executing at {1}. Currently logged in as {2}.", JobFriendlyName, DateTime.Now, SystemReader.GetWindowsUsername())); //Check if the job is marked as disabled in the config if (!string.IsNullOrWhiteSpace(ConfigReader.DisableJobsByFriendlyName) && ConfigReader.DisableJobsByFriendlyName.Split(';').Any(j => j.Trim().Equals(JobFriendlyName, StringComparison.InvariantCultureIgnoreCase))) { SLogger.Info(string.Format("Job {0} has been marked as disabled in the config file, therefore it does not execute this time.", JobFriendlyName)); } else { SLogger.Info(string.Format("Job {0} is executing...", JobFriendlyName)); InnerExcute(context); } SLogger.Info(string.Format("Job {0} finishes executing at {1}. Currently logged in as {2}.", JobFriendlyName, DateTime.Now, SystemReader.GetWindowsUsername())); } catch (Exception ex) { SLogger.Error(ex); SLogger.Info(string.Format("Job {0} stops executing at {1} due to internal errors. Currently logged in as {2}.", JobFriendlyName, DateTime.Now, SystemReader.GetWindowsUsername())); } }
private IEnumerable <ILibrarian> GetLibManagers(IEnumerable <Assembly> assemblies) { var result = new List <ILibrarian>(); foreach (var assembly in assemblies) { try { var libManagerTypes = (from type in assembly.GetTypes() where typeof(ILibrarian).IsAssignableFrom(type) select type); if (libManagerTypes.Any()) { result.Add(BuildLibrarian(libManagerTypes.First())); } else { result.Add(BuildLibrarian(assembly)); } } catch (Exception e) { SLogger <DreamLibManager> .Warn($"Can not create the instance of {assembly.GetName().Name}'s librarian", e); } } SLogger <DreamLibManager> .Info($"There are {result.Count()} librarians"); foreach (var lib in result) { SLogger <DreamLibManager> .Info($"{lib.Name}"); } return(result); }
private IEnumerable <Assembly> GetAssemblies(IEnumerable <FileInfo> files) { var result = new List <Assembly>(); foreach (var file in files) { try { if (file.Extension == PATTERN_OEXT.Substring(1)) { SLogger <DreamLibManager> .Info($"{file} is an aoext"); result.Add(Assembly.LoadFile(file.FullName)); } else { result.Add(Assembly.Load(File.ReadAllBytes(file.FullName))); } } catch (Exception e) { SLogger <DreamLibManager> .Warn($"can not load extension: {file.Name}", e); } } SLogger <DreamLibManager> .Debug($"There are {result.Count()} assemblies"); return(result); }
private bool TryGetInputEndPoint(ILeafUI ui, IClassTextManager texts, out IPEndPoint endPoint) { Task <object> dialogTask = ui.ShowDialogById("inputIpEndPoint"); dialogTask.Wait(); while (dialogTask.Result != null) { dynamic result = dialogTask.Result; SLogger <ENetDeviceConnecter> .Info(result.Result); if (result.IsInputRight == false) { ui.ShowMessage(texts["PleaseInputRightIP"]); dialogTask = ui.ShowDialogById("inputIpEndPoint"); dialogTask.Wait(); } else { endPoint = (IPEndPoint)result.Result; return(true); } } endPoint = null; return(false); }
public static async Task Writing(int taskId, int maxTime) { await Task.Run(() => { for (int i = 0; i < maxTime; i++) { SLogger <LoggerTest> .Info($"{taskId}/{i}"); } }); }
protected override Result ParseJson(string json) { Result result = base.ParseJson(json); byte[] imgData = webClient.DownloadData(result.Link); SLogger.Info(this, "Converting"); result.ImageMemoryStream = new MemoryStream(imgData); SLogger.Info(this, "Converted"); return(result); }
public static void Init() { SLogger.Info("OFM", "Open Fx loading"); SLogger.Info("OFM", "Injecting API"); FxLoader.LoadBase(new AutumnBox_GUI_Calller()); SLogger.Info("OFM", "Injected API"); SLogger.Info("OFM", "Loading extensions"); FxLoader.LoadExtensions(); SLogger.Info("OFM", "Loaded extensions"); }
public void Initialize() { Librarians = ReloadLibs(Check(GetLibManagers(GetAssemblies(GetFiles())))); Librarians.All((lib) => { SLogger <DreamLibManager> .Info($"Calling ready method: {lib.Name}"); SafeReady(lib); return(true); }); }
public static void Init() { SLogger.Info(TAG, "OpenFx loading"); SLogger.Info(TAG, "Init OpenFx env"); OpenFxLoader.InitEnv(GUIApiManager.BaseApiInstance); SLogger.Info(TAG, "OpenFx env inited"); SLogger.Info(TAG, "Load extensions"); OpenFxLoader.LoadExtensions(); SLogger.Info(TAG, $"There are {OpenFxLoader.LibsManager.Librarians.Count()} librarians and {OpenFxLoader.LibsManager.Wrappers().Count()} wrappers"); SLogger.Info(TAG, "Loaded extensions"); }
/// <summary> /// 异步Get请求 /// </summary> /// <param name="url"></param> /// <param name="callBack"></param> /// <param name="timeout"></param> /// <returns></returns> public static async Task GetAsync(string url, HttpResponseHandler callBack = null, double?timeout = null) { url = NetHelper.FormatRequestUrl(url); HttpResponse responseMsg = null; // 单机测试,使用FakeData生成随机测试数据模拟网络访问 if (AppRunConfigs.Instance.IsSingleTestMode) { var genTypes = callBack.Method.GetGenericArguments(); SAssert.MustTrue(genTypes.Length == 1, string.Format("非法的泛型回调在PostAsync {0}", genTypes)); callBack?.Invoke(ClientFakeDataHelper.Instance.CreateFakeDataNetResponse(genTypes[0]), null); return; } SLogger.Info($"Start Get AsyncRequest\nUrl:{url}\n"); try { //SetNetDALTimeout(timeout); var httpResponse = await s_asyncWebClient.GetAsync(url, HttpCompletionOption.ResponseContentRead); string responseContent = null; if (httpResponse.IsSuccessStatusCode) { var resultStr = await httpResponse.Content.ReadAsStringAsync(); responseContent = resultStr; } responseMsg = new HttpResponse(responseContent, httpResponse.StatusCode); } catch (HttpRequestException ex) { //responseMsg = new HttpResponse(ex.ToString(), HttpStatusCode.ExpectationFailed); responseMsg = new HttpResponse("网络请求异常", HttpStatusCode.ExpectationFailed); responseMsg.ResponseMsg = ex.ToString(); } catch (Exception ex) { //responseMsg = new HttpResponse(ex.ToString(), HttpStatusCode.ExpectationFailed); responseMsg = new HttpResponse("系统异常", HttpStatusCode.ExpectationFailed); responseMsg.ResponseMsg = ex.ToString(); } finally { callBack?.Invoke(responseMsg, null); } }
public override void Ready() { base.Ready(); SLogger <Jibrarian> .Info("Ready"); Instance = this; this.Storage = storageManager.Open(STORAGE_ID); StartJSRTService(); Regiser(new JSModule("" + "// @name Test\n" + "// @author zsh2401\n" + "function atmbMain(){ throw \"ERROR\" }")); }
private void KilProcesses() { using var cmd = new CommandProcedure() { FileName = "taskkill", Arguments = "/f /im adb.exe" }; cmd.OutputReceived += (s, e) => { SLogger <AdbServerKiller> .Info(e.Text); }; cmd.Execute(); }
public override void Ready() { base.Ready(); Current = this; SLogger <EssentialsLibrarin> .Info($"{nameof(EssentialsLibrarin)}'s ready"); extensionTaskManager.Start(nameof(EAutumnBoxUpdateChecker)); extensionTaskManager.Start(nameof(EAutumnBoxAdFetcher)); extensionTaskManager.Start(nameof(EEnableDonateCard)); var componentLoader = new ClassComponentsLoader("AutumnBox.Essentials", rlake, this.GetType().Assembly); componentLoader.Do(); }
protected virtual void KillServer() { lock (concurrentLock) { using var cmd = new CommandProcedure(AdbExecutableFile.ToString(), $"-P{ServerEndPoint.Port} kill-server"); int line = 0; cmd.OutputReceived += (s, e) => { line++; SLogger.Info(this, $"killing adb server {line}:{e.Text}"); }; cmd.Execute(); SLogger.Info(this, "server killed"); } }
public override void Ready() { base.Ready(); Current = this; SLogger <EssentialsLibrarin> .Info($"{nameof(EssentialsLibrarin)}'s ready"); notificationManager.Success("Essentials library is loaded"); extensionTaskManager.Start("EAutumnBoxUpdateChecker"); extensionTaskManager.Start("EAutumnBoxAdFetcher"); var componentLoader = new ClassComponentsLoader("AutumnBox.Essentials", rlake, this.GetType().Assembly); componentLoader.Do(); }
public VMMainWindowV2() { base.RaisePropertyChangedOnDispatcher = true; InitTitle(); LanguageManager.Instance.LanguageChanged += (s, e) => { InitTitle(); }; AppLoader.Instance.Loaded += (s, e) => { SLogger <VMMainWindowV2> .Info("switching"); MainWindowBus.SwitchToMainGrid(); SLogger <VMMainWindowV2> .Info("switched"); }; }
protected virtual void KillServer() { lock (concurrentLock) { using var cmd = new CommandProcedure() { FileName = AdbExecutableFile.ToString(), Arguments = $"-P{ServerEndPoint.Port} kill-server", DirectExecute = true, }; cmd.InitializeAdbEnvironment(AdbClientDirectory, (ushort)ServerEndPoint.Port); new LocalAdbServerKiller(cmd).Kill().Wait(); SLogger.Info(this, "Adb Server has been stopped."); } }
public static void SwitchToMainGrid() { App.Current.Dispatcher.Invoke(() => { try { SLogger.Info(nameof(MainWindowBus), "Panel creating"); var panel = new PanelMain(); MainWindow.MainContentContainer.Content = panel; SLogger.Info(nameof(MainWindowBus), "Created panel instance"); } catch (Exception e) { SLogger.Warn(nameof(MainWindowBus), "Could not create panel", e); } }); }
public Task Kill() { return(Task.Run(() => { commandKillServer.OutputReceived += (s, e) => { SLogger.Info(this, $"{e.Text}"); }; commandKillServer.ExecuteAsync(); Thread.Sleep(MAX_TIMEOUT); if (commandKillServer.Status != CommandStatus.Executing && commandKillServer.Result.ExitCode == 0) { commandKillServer.Cancel(); commandKillServer.Dispose(); KilProcesses(); } })); }
protected virtual IPEndPoint StartServer(ushort port = 6605) { using var cmd = new CommandProcedure() { FileName = AdbExecutableFile.ToString(), Arguments = $"-P{port} start-server", DirectExecute = true, }; cmd.InitializeAdbEnvironment(AdbClientDirectory, port); int line = 0; cmd.OutputReceived += (s, e) => { line++; SLogger.Info(this, $"statring adb server {line}:{e.Text}"); }; cmd.Execute(); return(new IPEndPoint(IPAddress.Parse("127.0.0.1"), port)); }
public List <T> Fetch <T>() { int count = 0; while (IsThisInTransaction()) { string fn = _transactionSetters[DBFilename]; SLogger.Info("Waiting for transaction for 0.5s, caller was " + fn); Thread.Sleep(500); count++; if (count > 240 * 2) { throw new FlaException("Waited more than 240s"); } } SLogger.Debug("Fetching all " + typeof(T).FullName + " from " + DBFilename); lock (Dblock) { return(_database.Fetch <T>() ?? throw new FlaException("Fetch failed")); } }
protected virtual void KillServer() { lock (concurrentLock) { using var cmd = new CommandProcedure() { FileName = AdbExecutableFile.ToString(), Arguments = $"-P{ServerEndPoint.Port} kill-server", DirectExecute = true, }; cmd.InitializeAdbEnvironment(AdbClientDirectory, (ushort)ServerEndPoint.Port); int line = 0; cmd.OutputReceived += (s, e) => { line++; SLogger.Info(this, $"killing adb server {line}:{e.Text}"); }; cmd.Execute(); SLogger.Info(this, "server killed"); } }
public override void Ready() { base.Ready(); Storage = storageManager.Open(nameof(EssentialsLibrarin)); Current = this; SLogger <EssentialsLibrarin> .Info($"{nameof(EssentialsLibrarin)}'s ready"); var last_update_check_time = Storage.ReadJsonObject <DateTime>("last_update_check_time"); if (last_update_check_time == default || (last_update_check_time - DateTime.Now).TotalDays >= 1) { extensionTaskManager.Start(nameof(EAutumnBoxUpdateChecker)); Storage.SaveJsonObject("last_update_check_time", DateTime.Now); } extensionTaskManager.Start(nameof(EAutumnBoxAdFetcher)); extensionTaskManager.Start(nameof(EDonateCardRegister)); var componentLoader = new ClassComponentsLoader("AutumnBox.Essentials", rlake, this.GetType().Assembly); componentLoader.Do(); }
public async Task Do(APIIndex index) { var result = await new NetReader().Read(index.MotdUrl) .ContinueWith(task => task.Result.ToJson <Result>()); SLogger <MOTDHandler> .Info(result.Message); if (result.ClickUrl != null) { Growl.Ask(new GrowlInfo() { Message = result.Message, ShowCloseButton = true, ConfirmStr = result.GoBtnStr ?? "Go", Token = MainWindowBus.TOKEN_PANEL_MAIN }); } else { MainWindowBus.Info(result.Message); } }
protected override IPEndPoint StartServer() { var random = new Random(); ushort port; do { port = (ushort)random.Next(IPEndPoint.MinPort, IPEndPoint.MaxPort); } while (PortIsUsinngNow(port)); using (var cmd = new CommandProcedure("adb.exe", $"-P{port} start-server")) { cmd.KillChildWhenDisposing = false; cmd.OutputReceived += (s, e) => { SLogger <Win32AdbManager> .Info($"adb server starting: {e.Text}"); }; cmd.Disposed += (s, e) => SLogger <Win32AdbManager> .Info("Command start-adb disposed"); cmd.Execute(); } return(new IPEndPoint(IPAddress.Parse("127.0.0.1"), port)); }