Add JSON-RPC interface and refactor for MCP support
All checks were successful
Smoke tests / Build and smoke test (push) Successful in 1h0m43s
All checks were successful
Smoke tests / Build and smoke test (push) Successful in 1h0m43s
This commit is contained in:
21
src/main.rs
21
src/main.rs
@@ -21,6 +21,7 @@ async fn main() {
|
||||
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();
|
||||
|
||||
let mut port = DEFAULT_PORT;
|
||||
let mut jsonrpc_port = 2223;
|
||||
let mut world_dir = PathBuf::from(DEFAULT_WORLD_DIR);
|
||||
let mut db_path = PathBuf::from(DEFAULT_DB_PATH);
|
||||
|
||||
@@ -35,6 +36,13 @@ async fn main() {
|
||||
.and_then(|s| s.parse().ok())
|
||||
.expect("--port requires a number");
|
||||
}
|
||||
"--rpc-port" => {
|
||||
i += 1;
|
||||
jsonrpc_port = args
|
||||
.get(i)
|
||||
.and_then(|s| s.parse().ok())
|
||||
.expect("--rpc-port requires a number");
|
||||
}
|
||||
"--world" | "-w" => {
|
||||
i += 1;
|
||||
world_dir = PathBuf::from(args.get(i).expect("--world requires a path"));
|
||||
@@ -45,9 +53,10 @@ async fn main() {
|
||||
}
|
||||
"--help" => {
|
||||
eprintln!("Usage: mudserver [OPTIONS]");
|
||||
eprintln!(" --port, -p Listen port (default: {DEFAULT_PORT})");
|
||||
eprintln!(" --world, -w World directory (default: {DEFAULT_WORLD_DIR})");
|
||||
eprintln!(" --db, -d Database path (default: {DEFAULT_DB_PATH})");
|
||||
eprintln!(" --port, -p SSH listen port (default: {DEFAULT_PORT})");
|
||||
eprintln!(" --rpc-port JSON-RPC listen port (default: 2223)");
|
||||
eprintln!(" --world, -w World directory (default: {DEFAULT_WORLD_DIR})");
|
||||
eprintln!(" --db, -d Database path (default: {DEFAULT_DB_PATH})");
|
||||
std::process::exit(0);
|
||||
}
|
||||
other => {
|
||||
@@ -90,6 +99,12 @@ async fn main() {
|
||||
tick::run_tick_engine(tick_state).await;
|
||||
});
|
||||
|
||||
// Spawn JSON-RPC server
|
||||
let rpc_state = state.clone();
|
||||
tokio::spawn(async move {
|
||||
mudserver::jsonrpc::run_jsonrpc_server(rpc_state, jsonrpc_port).await;
|
||||
});
|
||||
|
||||
let mut server = ssh::MudServer::new(state);
|
||||
|
||||
let listener = TcpListener::bind(("0.0.0.0", port)).await.unwrap();
|
||||
|
||||
Reference in New Issue
Block a user