示例#1
0
        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]);
示例#3
0
 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;
 }