summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorTimo Kösters <timo@koesters.xyz>2022-06-25 16:12:23 +0200
committerNyaaori <+@nyaaori.cat>2022-08-15 19:03:37 +0200
commit865e35df17f7e9e3dba21765871285f0d1bdeeeb (patch)
tree8148c7f952c53a30f10572513d9924ccc62a06eb /src/main.rs
parent604b1a5cf190b5a41998cc8ce066cf5cf6fa025d (diff)
downloadconduit-865e35df17f7e9e3dba21765871285f0d1bdeeeb.zip
Work on rooms/state, database, alias, directory, edus services, event_handler, lazy_loading, metadata, outlier, and pdu_metadata
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs51
1 files changed, 29 insertions, 22 deletions
diff --git a/src/main.rs b/src/main.rs
index 9a0928a..a1af976 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -46,27 +46,26 @@ use tikv_jemallocator::Jemalloc;
#[global_allocator]
static GLOBAL: Jemalloc = Jemalloc;
-#[tokio::main]
-async fn main() {
- let raw_config =
- Figment::new()
- .merge(
- Toml::file(Env::var("CONDUIT_CONFIG").expect(
- "The CONDUIT_CONFIG env var needs to be set. Example: /etc/conduit.toml",
- ))
- .nested(),
- )
- .merge(Env::prefixed("CONDUIT_").global());
-
- let config = match raw_config.extract::<Config>() {
- Ok(s) => s,
- Err(e) => {
- eprintln!("It looks like your config is invalid. The following error occured while parsing it: {}", e);
- std::process::exit(1);
- }
- };
+lazy_static! {
+ static ref DB: Database = {
+ let raw_config =
+ Figment::new()
+ .merge(
+ Toml::file(Env::var("CONDUIT_CONFIG").expect(
+ "The CONDUIT_CONFIG env var needs to be set. Example: /etc/conduit.toml",
+ ))
+ .nested(),
+ )
+ .merge(Env::prefixed("CONDUIT_").global());
+
+ let config = match raw_config.extract::<Config>() {
+ Ok(s) => s,
+ Err(e) => {
+ eprintln!("It looks like your config is invalid. The following error occured while parsing it: {}", e);
+ std::process::exit(1);
+ }
+ };
- let start = async {
config.warn_deprecated();
let db = match Database::load_or_create(&config).await {
@@ -79,8 +78,15 @@ async fn main() {
std::process::exit(1);
}
};
+ };
+}
- run_server(&config, db).await.unwrap();
+#[tokio::main]
+async fn main() {
+ lazy_static::initialize(&DB);
+
+ let start = async {
+ run_server(&config).await.unwrap();
};
if config.allow_jaeger {
@@ -120,7 +126,8 @@ async fn main() {
}
}
-async fn run_server(config: &Config, db: Arc<RwLock<Database>>) -> io::Result<()> {
+async fn run_server() -> io::Result<()> {
+ let config = DB.globals.config;
let addr = SocketAddr::from((config.address, config.port));
let x_requested_with = HeaderName::from_static("x-requested-with");