public static async Task <int> Main(string[] args) { if (args.Contains("--standalone")) { await StandaloneGeneratorRunner.RunAsync(args); return(0); } if (args.Contains("--launch-debugger") && !Debugger.IsAttached) { Debugger.Launch(); } if (!HasServerArgument(args)) { Console.WriteLine("Not a valid invocation of this AutoRest extension. Invoke this extension through the AutoRest pipeline."); return(1); } var connection = new JsonRpcConnection(Console.OpenStandardInput(), Console.OpenStandardOutput(), new Dictionary <string, IncomingRequestAction> { { nameof(IncomingMessageSerializer.GetPluginNames), (c, r) => r.GetPluginNames(PluginProcessor.PluginNames) }, { nameof(IncomingMessageSerializer.Process), (c, r) => r.Process(c, PluginStart) }, { nameof(IncomingMessageSerializer.Shutdown), (c, r) => r.Shutdown(c.CancellationTokenSource) } }); connection.Start(); Console.Error.WriteLine("Shutting Down"); return(0); }
public static string Process(this IncomingRequest request, JsonRpcConnection connection, ProcessAction processAction) { var parameters = request.Params.ToStringArray(); var(pluginName, sessionId) = (parameters ![0], parameters ![1]);
private static bool PluginStart(JsonRpcConnection connection, string pluginName, string sessionId) => PluginProcessor.Start(new JsonRpcCommunication(connection, pluginName, sessionId)).GetAwaiter().GetResult();
public JsonRpcCommunication(JsonRpcConnection connection, string pluginName, string sessionId) { _connection = connection; PluginName = pluginName; _sessionId = sessionId; }