Esempio n. 1
0
        private static IJsonRpcServiceHost BuildServiceHost(ISession session, TextWriter logWriter,
                                                            IJsonRpcContractResolver contractResolver, bool debugMode)
        {
            var loggerFactory = new LoggerFactory();

            loggerFactory.AddProvider(new DebugLoggerProvider(null));
            var builder = new ServiceHostBuilder
            {
                ContractResolver = contractResolver,
                Session          = session,
                Options          = JsonRpcServiceHostOptions.ConsistentResponseSequence,
                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());
        }