-
Notifications
You must be signed in to change notification settings - Fork 102
/
Copy pathmod.rs
36 lines (30 loc) · 1.03 KB
/
mod.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use crate::{interfaces::HostError, server::api::create_router, ProverState};
use anyhow::Context;
use std::{net::SocketAddr, str::FromStr};
use tokio::net::TcpListener;
use tracing::info;
pub mod api;
/// Starts the proverd server.
pub async fn serve(state: ProverState) -> anyhow::Result<()> {
#[cfg(feature = "sp1")]
if let Some(orchestrator_addr) = state.opts.sp1_orchestrator_address.as_ref() {
sp1_driver::serve_worker(
state.opts.sp1_worker_address.clone(),
orchestrator_addr.clone(),
)
.await;
}
let addr = SocketAddr::from_str(&state.opts.address)
.map_err(|_| HostError::InvalidAddress(state.opts.address.clone()))?;
let listener = TcpListener::bind(addr).await?;
info!("Listening on: {}", listener.local_addr()?);
let router = create_router(
state.opts.concurrency_limit,
state.opts.jwt_secret.as_deref(),
)
.with_state(state);
axum::serve(listener, router)
.await
.context("Server couldn't serve")?;
Ok(())
}