surrealpatch/src/main.rs

87 lines
2 KiB
Rust
Raw Normal View History

//! This binary is the web-platform server for [SurrealDB](https://surrealdb.com) the
//! ultimate cloud database for tomorrow's applications. SurrealDB is a scalable,
//! distributed, collaborative, document-graph database for the realtime web.
//!
//! This binary can be used to start a database server instance using an embedded
//! in-memory datastore, or an embedded datastore persisted to disk. In addition, it
//! can be used in distributed mode by connecting to a distributed [TiKV](https://tikv.org)
//! key-value store.
2023-02-03 11:46:39 +00:00
#![deny(clippy::mem_forget)]
2022-03-23 15:12:29 +00:00
#![forbid(unsafe_code)]
2020-06-29 15:36:01 +00:00
#[macro_use]
extern crate log;
#[cfg(any(
feature = "storage-mem",
feature = "storage-tikv",
feature = "storage-rocksdb",
feature = "storage-speedb",
feature = "storage-fdb",
))]
#[macro_use]
mod mac;
2020-06-29 15:36:01 +00:00
mod cli;
mod cnf;
#[cfg(any(
feature = "storage-mem",
feature = "storage-tikv",
feature = "storage-rocksdb",
feature = "storage-speedb",
feature = "storage-fdb",
))]
mod dbs;
mod env;
2020-06-29 15:36:01 +00:00
mod err;
#[cfg(any(
feature = "storage-mem",
feature = "storage-tikv",
feature = "storage-rocksdb",
feature = "storage-speedb",
feature = "storage-fdb",
))]
mod iam;
#[cfg(any(
feature = "storage-mem",
feature = "storage-tikv",
feature = "storage-rocksdb",
feature = "storage-speedb",
feature = "storage-fdb",
))]
2022-02-09 15:55:04 +00:00
mod net;
mod o11y;
#[cfg(any(
feature = "storage-mem",
feature = "storage-tikv",
feature = "storage-rocksdb",
feature = "storage-speedb",
feature = "storage-fdb",
))]
mod rpc;
2020-06-29 15:36:01 +00:00
use std::future::Future;
use std::process::ExitCode;
fn main() -> ExitCode {
// Initiate the command line
with_enough_stack(cli::init())
}
/// Rust's default thread stack size of 2MiB doesn't allow sufficient recursion depth.
fn with_enough_stack<T>(fut: impl Future<Output = T> + Send) -> T {
let stack_size = 8 * 1024 * 1024;
// Stack frames are generally larger in debug mode.
#[cfg(debug_assertions)]
let stack_size = stack_size * 2;
tokio::runtime::Builder::new_multi_thread()
.enable_all()
.thread_stack_size(stack_size)
.build()
.unwrap()
.block_on(fut)
2020-06-29 15:36:01 +00:00
}