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(); }
protected async override Task OnRestoreState(StateRestorer state) { await base.OnRestoreState(state); var kobi = state.Annotation <int>("Kobi"); }