Updates
This commit is contained in:
@@ -1,6 +1,14 @@
|
||||
[package]
|
||||
name = "hero-server-unix"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1.0"
|
||||
clap = { version = "4.5", features = ["derive"] }
|
||||
tracing = "0.1"
|
||||
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
||||
tokio = { version = "1", features = ["macros", "rt-multi-thread", "signal"] }
|
||||
|
||||
# Reuse the OpenRPC server crate that registers all methods and now supports IPC
|
||||
hero-openrpc-server = { path = "../../openrpc/server" }
|
||||
|
@@ -1,3 +1,64 @@
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
use std::path::PathBuf;
|
||||
|
||||
use clap::Parser;
|
||||
use tracing_subscriber::EnvFilter;
|
||||
|
||||
use hero_openrpc_server::{OpenRpcServer, OpenRpcServerConfig, Transport};
|
||||
|
||||
/// IPC (Unix socket) JSON-RPC server launcher.
|
||||
///
|
||||
/// This binary starts the OpenRPC server over a Unix domain socket using the reth-ipc transport.
|
||||
#[derive(Parser, Debug)]
|
||||
#[command(name = "hero-server-unix", version, about = "Start the JSON-RPC IPC server")]
|
||||
struct Args {
|
||||
/// Filesystem path to the Unix domain socket
|
||||
#[arg(long, default_value = "/tmp/baobab.ipc", env = "HERO_IPC_SOCKET")]
|
||||
socket_path: PathBuf,
|
||||
|
||||
/// Optional path to a supervisor configuration file
|
||||
#[arg(long)]
|
||||
supervisor_config: Option<PathBuf>,
|
||||
|
||||
/// Database path (reserved for future use)
|
||||
#[arg(long, default_value = "./db", env = "HERO_DB_PATH")]
|
||||
db_path: PathBuf,
|
||||
|
||||
/// Log filter (e.g., info, debug, trace)
|
||||
#[arg(long, default_value = "info", env = "RUST_LOG")]
|
||||
log: String,
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> anyhow::Result<()> {
|
||||
let args = Args::parse();
|
||||
|
||||
// Initialize tracing with provided log filter
|
||||
tracing_subscriber::FmtSubscriber::builder()
|
||||
.with_env_filter(EnvFilter::new(args.log.clone()))
|
||||
.try_init()
|
||||
.expect("setting default subscriber failed");
|
||||
|
||||
let cfg = OpenRpcServerConfig {
|
||||
transport: Transport::Unix(args.socket_path.clone()),
|
||||
supervisor_config_path: args.supervisor_config.clone(),
|
||||
db_path: args.db_path.clone(),
|
||||
};
|
||||
|
||||
// Build server state
|
||||
let server = OpenRpcServer::new(cfg.clone()).await?;
|
||||
|
||||
// Start IPC server
|
||||
let handle = server.start(cfg).await?;
|
||||
|
||||
tracing::info!(
|
||||
"IPC server started on {} (press Ctrl+C to stop)",
|
||||
args.socket_path.display()
|
||||
);
|
||||
|
||||
// Run until stopped
|
||||
tokio::spawn(handle.stopped());
|
||||
tokio::signal::ctrl_c().await?;
|
||||
tracing::info!("Shutting down IPC server");
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
Reference in New Issue
Block a user