Comparison

util/startup.lua @ 8653:dab9b8af0f01

util.startup: Execute startup routine inside async context
author Matthew Wild <mwild1@gmail.com>
date Thu, 22 Mar 2018 16:24:22 +0000
parent 8639:070a77c15f63
child 8664:d49acc9a8da2
comparison
equal deleted inserted replaced
8652:03bb534593cb 8653:dab9b8af0f01
3 local startup = {}; 3 local startup = {};
4 4
5 local prosody = { events = require "util.events".new() }; 5 local prosody = { events = require "util.events".new() };
6 6
7 local config = require "core.configmanager"; 7 local config = require "core.configmanager";
8 local async = require "util.async";
8 9
9 local dependencies = require "util.dependencies"; 10 local dependencies = require "util.dependencies";
10 11
11 function startup.read_config() 12 function startup.read_config()
12 local filenames = {}; 13 local filenames = {};
495 startup.init_http_client(); 496 startup.init_http_client();
496 startup.make_dummy_hosts(); 497 startup.make_dummy_hosts();
497 end 498 end
498 499
499 function startup.prosody() 500 function startup.prosody()
500 -- These actions are in a strict order, as many depend on 501 async.once(function ()
501 -- previous steps to have already been performed 502 -- These actions are in a strict order, as many depend on
502 startup.read_config(); 503 -- previous steps to have already been performed
503 startup.sanity_check(); 504 startup.read_config();
504 startup.sandbox_require(); 505 startup.sanity_check();
505 startup.set_function_metatable(); 506 startup.sandbox_require();
506 startup.check_dependencies(); 507 startup.set_function_metatable();
507 startup.load_libraries(); 508 startup.check_dependencies();
508 startup.init_global_state(); 509 startup.load_libraries();
509 startup.init_logging(); 510 startup.init_global_state();
510 startup.chdir(); 511 startup.init_logging();
511 startup.add_global_prosody_functions(); 512 startup.chdir();
512 startup.read_version(); 513 startup.add_global_prosody_functions();
513 startup.log_greeting(); 514 startup.read_version();
514 startup.log_dependency_warnings(); 515 startup.log_greeting();
515 startup.load_secondary_libraries(); 516 startup.log_dependency_warnings();
516 startup.init_http_client(); 517 startup.load_secondary_libraries();
517 startup.init_data_store(); 518 startup.init_http_client();
518 startup.init_global_protection(); 519 startup.init_data_store();
519 startup.prepare_to_start(); 520 startup.init_global_protection();
520 startup.notify_started(); 521 startup.prepare_to_start();
522 startup.notify_started();
523 end);
521 end 524 end
522 525
523 return startup; 526 return startup;