Beispiel #1
0
        private static IJsonRpcServiceHost BuildServiceHost(TextWriter logWriter,
                                                            IJsonRpcContractResolver contractResolver, bool debugMode)
        {
            var loggerFactory = new LoggerFactory();

            loggerFactory.AddProvider(new DebugLoggerProvider(null));

            var builder = new JsonRpcServiceHostBuilder {
                ContractResolver = contractResolver,
                LoggerFactory    = loggerFactory
            };

            builder.UseCancellationHandling();
            builder.Register(typeof(Program).GetTypeInfo().Assembly);

            if (debugMode)
            {
                // Log all the client-to-server calls.
                builder.Intercept(async(context, next) => {
                    lock (logWriter) {
                        logWriter.WriteLine("> {0}", context.Request);
                    }

                    await next();

                    lock (logWriter) {
                        logWriter.WriteLine("< {0}", context.Response);
                    }
                });
            }
            return(builder.Build());
        }
Beispiel #2
0
        private static IJsonRpcServiceHost BuildServiceHost(TextWriter logWriter,
                                                            IJsonRpcContractResolver contractResolver, bool debugMode)
        {
            var loggerFactory = LoggerFactory.Create(builder => builder.AddDebug());

            if (debugMode)
            {
                loggerFactory.AddFile("logs-" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".log");
            }
            var builder = new JsonRpcServiceHostBuilder
            {
                ContractResolver = contractResolver,
                LoggerFactory    = loggerFactory
            };

            builder.UseCancellationHandling();
            builder.Register(typeof(Program).GetTypeInfo().Assembly);
            if (debugMode)
            {
                // Log all the client-to-server calls.
                builder.Intercept(async(context, next) =>
                {
                    lock (logWriter) logWriter.WriteLine("{0} > {1}", Utility.GetTimeStamp(), context.Request);
                    await next();
                    lock (logWriter) logWriter.WriteLine("{0} < {1}", Utility.GetTimeStamp(), context.Response);
                });
            }
            return(builder.Build());
        }
        public LanguageServerSession(JsonRpcClient rpcClient, IJsonRpcContractResolver contractResolver)
        {
            Check.ArgumentNull(nameof(rpcClient), rpcClient);

            RpcClient = rpcClient;
            var builder = new JsonRpcProxyBuilder {
                ContractResolver = contractResolver
            };

            Client = new ClientProxy(builder, rpcClient);
        }
        public LanguageServerSession(JsonRpcClient rpcClient, IJsonRpcContractResolver contractResolver)
        {
            RpcClient = rpcClient ?? throw new ArgumentNullException(nameof(rpcClient));
            var builder = new JsonRpcProxyBuilder {
                ContractResolver = contractResolver
            };

            Client             = new ClientProxy(builder, rpcClient);
            Documents          = new ConcurrentDictionary <Uri, SessionDocument>();
            DiagnosticProvider = new DiagnosticProvider();
        }
Beispiel #5
0
 /// <summary>Initializes a new instance of the <see cref="JsonRpcSerializer" /> class.</summary>
 /// <param name="contractResolver">The JSON-RPC message contract resolver instance.</param>
 /// <param name="jsonSerializer">The JSON serializer instance.</param>
 /// <param name="compatibilityLevel">The JSON-RPC protocol compatibility level.</param>
 public JsonRpcSerializer(IJsonRpcContractResolver contractResolver = null, JsonSerializer jsonSerializer = null, JsonRpcCompatibilityLevel compatibilityLevel = default)
 {
     _contractResolver   = contractResolver;
     _jsonSerializer     = jsonSerializer ?? JsonSerializer.CreateDefault(_jsonSerializerSettings);
     _compatibilityLevel = compatibilityLevel;
 }