From 5774f40b650a376e9b622dba9df6c43589b0d398 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Thu, 9 Apr 2020 00:29:06 +0300 Subject: Logs, Comments & General organization on FSE/PPC. Several improvements. --- .../Console/DefaultConsoleEngineService.cs | 78 ++++++++++++++-------- 1 file changed, 52 insertions(+), 26 deletions(-) (limited to 'Software/Visual_Studio/PPC/Tango.PPC.Common/Console/DefaultConsoleEngineService.cs') diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Console/DefaultConsoleEngineService.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Console/DefaultConsoleEngineService.cs index 4a9ee468a..94b677b18 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Console/DefaultConsoleEngineService.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Console/DefaultConsoleEngineService.cs @@ -5,6 +5,7 @@ using System.Text; using System.Threading.Tasks; using Tango.Console; using Tango.Console.Network; +using Tango.Core; using Tango.Core.DI; using Tango.Integration.ExternalBridge; using Tango.PPC.Common.ExternalBridge; @@ -12,19 +13,40 @@ using Tango.Transport; namespace Tango.PPC.Common.Console { + /// + /// Represents the default implementation + /// which listens to incoming console request by registering as a external bridge request handler. + /// + /// + /// [TangoCreateWhenRegistered] - public class DefaultConsoleEngineService : IConsoleEngineService, IExternalBridgeRequestHandler + public class DefaultConsoleEngineService : ExtendedObject, IConsoleEngineService, IExternalBridgeRequestHandler { + /// + /// Gets or sets a value indicating whether this is enabled. + /// public bool Enabled { get; set; } = true; + /// + /// Initializes a new instance of the class. + /// + /// The external bridge service instance. public DefaultConsoleEngineService(IPPCExternalBridgeService externalBridge) { externalBridge.RegisterRequestHandler(this); } - [ExternalBridgeRequestHandlerMethod(typeof(GetCurrentDirectoryRequest))] - public async void OnGetCurrentDirectoryRequest(GetCurrentDirectoryRequest request, String token, ITransporter transporter) + /// + /// Handles requests. + /// + /// The request. + /// The token. + /// The transporter. + [ExternalBridgeRequestHandlerMethod(typeof(GetCurrentDirectoryRequest), RequestHandlerLoggingMode.LogRequestName)] + public async Task OnGetCurrentDirectoryRequest(GetCurrentDirectoryRequest request, String token, ITransporter transporter) { + this.ThrowIfDisabled(); + await transporter.SendGenericResponse(new GetCurrentDirectoryResponse() { CurrentDirectory = Environment.CurrentDirectory, @@ -32,35 +54,39 @@ namespace Tango.PPC.Common.Console }, token); } - [ExternalBridgeRequestHandlerMethod(typeof(ConsoleCommandRequest))] - public async void OnConsoleCommandRequest(ConsoleCommandRequest request, String token, ITransporter transporter) + /// + /// Handles requests. + /// + /// The request. + /// The token. + /// The transporter. + [ExternalBridgeRequestHandlerMethod(typeof(ConsoleCommandRequest), RequestHandlerLoggingMode.LogRequestNameAndContent)] + public async Task OnConsoleCommandRequest(ConsoleCommandRequest request, String token, ITransporter transporter) { - if (Enabled) + this.ThrowIfDisabled(); + + LogManager.Log($"{nameof(ConsoleCommandRequest)} received with command '{request.Command}'. Executing..."); + + ConsoleExecutionEngine engine = new ConsoleExecutionEngine(); + var result = await engine.Execute(request); + + LogManager.Log("Console command executed successfully."); + + await transporter.SendGenericResponse(new ConsoleCommandResponse() { - try - { - ConsoleExecutionEngine engine = new ConsoleExecutionEngine(); - var result = await engine.Execute(request); - await transporter.SendGenericResponse(new ConsoleCommandResponse() - { - Output = result.Output, - Suggestions = result.Suggestions, - WorkingFolder = result.WorkingFolder - }, token, new TransportResponseConfig() - { - Immediate = true, - }); - } - catch (Exception ex) - { - await transporter.SendErrorResponse(ex, token); - } - } + Output = result.Output, + Suggestions = result.Suggestions, + WorkingFolder = result.WorkingFolder + }, token); } + /// + /// Called when any of the external bridge clients (receivers) has disconnected. + /// + /// The receiver. public void OnReceiverDisconnected(ExternalBridgeReceiver receiver) { - + //Do nothing. } } } -- cgit v1.3.1