コード例 #1
0
        static void Main(string[] args)
        {
            var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());

            XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));
            var log           = log4net.LogManager.GetLogger(typeof(Program));
            var settings      = GetSettings();
            var mongoDbClient = new MongoDbClient(settings.MongoConnectionString, TimeSpan.FromSeconds(2));

            ThreadPool.SetMaxThreads(32767, 32767);
            ThreadPool.SetMinThreads(2048, 2048);

            var(authorizer, sourceStorage) = new StateRestorer(mongoDbClient).Restore().GetAwaiter().GetResult();

            var addUserInfoHandler = new AddSourceInfoHandler(mongoDbClient, authorizer, sourceStorage, log);
            var sseClient          = new SseClient();
            var subscriber         = new Subscriber(authorizer, sourceStorage, sseClient);
            var messagSender       = new MessageSender();
            var sendMessageHandler = new SendMessageHandler(messagSender, mongoDbClient, sourceStorage, authorizer, settings.dataTtl);
            var handlerMapper      = new HandlerMapper();

            var expDaemon = new ExpirationDaemon(sourceStorage, settings.dataTtl);

            handlerMapper.Add("/addUserInfo", HttpMethod.Post, addUserInfoHandler);
            handlerMapper.Add("/subscribe", HttpMethod.Get, new SubscribeOnSourceHandler(subscriber));
            handlerMapper.Add("/sendMessage", HttpMethod.Post, sendMessageHandler);


            var routingHandler = new RoutingHandler(handlerMapper, log);

            var host = WebHost.CreateDefaultBuilder(args)
                       .ConfigureServices(s =>
            {
                s.AddSingleton(routingHandler);
                s.AddHttpContextAccessor();
            })
                       .UseContentRoot(Directory.GetCurrentDirectory())
                       .UseKestrel()
                       .UseStartup <Startup>()
                       .ConfigureKestrel((context, options) =>
            {
                //options.Listen(new IPAddress(new byte[] { 10, 33, 54, 120 }), 5000);
                options.Listen(new IPAddress(new byte[] { 0, 0, 0, 0 }), 5000);
            })
                       .Build();

            host.Run();
        }
コード例 #2
0
        protected async override Task OnRestoreState(StateRestorer state)
        {
            await base.OnRestoreState(state);

            var kobi = state.Annotation <int>("Kobi");
        }