mirror of
https://github.com/sigp/lighthouse.git
synced 2026-06-30 19:34:37 +00:00
Expand beacon_chain_sim
This commit is contained in:
@@ -63,6 +63,7 @@ pub struct ClientBuilder<T: BeaconChainTypes> {
|
||||
libp2p_network: Option<Arc<NetworkService<T>>>,
|
||||
libp2p_network_send: Option<UnboundedSender<NetworkMessage>>,
|
||||
http_listen_addr: Option<SocketAddr>,
|
||||
grpc_listen_addr: Option<(String, u16)>,
|
||||
websocket_listen_addr: Option<SocketAddr>,
|
||||
eth_spec_instance: T::EthSpec,
|
||||
}
|
||||
@@ -94,6 +95,7 @@ where
|
||||
libp2p_network: None,
|
||||
libp2p_network_send: None,
|
||||
http_listen_addr: None,
|
||||
grpc_listen_addr: None,
|
||||
websocket_listen_addr: None,
|
||||
eth_spec_instance,
|
||||
}
|
||||
@@ -283,15 +285,17 @@ where
|
||||
.clone()
|
||||
.ok_or_else(|| "grpc_server requires a libp2p network")?;
|
||||
|
||||
let exit_signal = rpc::start_server(
|
||||
let (exit_signal, listen_addr) = rpc::start_server(
|
||||
config,
|
||||
&context.executor,
|
||||
network_send,
|
||||
beacon_chain,
|
||||
context.log,
|
||||
);
|
||||
)
|
||||
.map_err(|e| format!("Failed to start gRPC server: {}", e))?;
|
||||
|
||||
self.exit_signals.push(exit_signal);
|
||||
self.grpc_listen_addr = Some(listen_addr);
|
||||
|
||||
Ok(self)
|
||||
}
|
||||
@@ -455,6 +459,7 @@ where
|
||||
beacon_chain: self.beacon_chain,
|
||||
libp2p_network: self.libp2p_network,
|
||||
http_listen_addr: self.http_listen_addr,
|
||||
grpc_listen_addr: self.grpc_listen_addr,
|
||||
websocket_listen_addr: self.websocket_listen_addr,
|
||||
_exit_signals: self.exit_signals,
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ pub struct Client<T: BeaconChainTypes> {
|
||||
libp2p_network: Option<Arc<NetworkService<T>>>,
|
||||
http_listen_addr: Option<SocketAddr>,
|
||||
websocket_listen_addr: Option<SocketAddr>,
|
||||
grpc_listen_addr: Option<(String, u16)>,
|
||||
/// Exit signals will "fire" when dropped, causing each service to exit gracefully.
|
||||
_exit_signals: Vec<Signal>,
|
||||
}
|
||||
@@ -40,6 +41,11 @@ impl<T: BeaconChainTypes> Client<T> {
|
||||
self.http_listen_addr
|
||||
}
|
||||
|
||||
/// Returns the address of the client's gRPC API server, if it was started.
|
||||
pub fn grpc_listen_addr(&self) -> Option<(String, u16)> {
|
||||
self.grpc_listen_addr.clone()
|
||||
}
|
||||
|
||||
/// Returns the address of the client's WebSocket API server, if it was started.
|
||||
pub fn websocket_listen_addr(&self) -> Option<SocketAddr> {
|
||||
self.websocket_listen_addr
|
||||
|
||||
@@ -28,7 +28,7 @@ pub fn start_server<T: BeaconChainTypes>(
|
||||
network_chan: mpsc::UnboundedSender<NetworkMessage>,
|
||||
beacon_chain: Arc<BeaconChain<T>>,
|
||||
log: slog::Logger,
|
||||
) -> exit_future::Signal {
|
||||
) -> Result<(exit_future::Signal, (String, u16)), String> {
|
||||
let env = Arc::new(Environment::new(1));
|
||||
|
||||
// build a channel to kill the rpc server
|
||||
@@ -76,16 +76,24 @@ pub fn start_server<T: BeaconChainTypes>(
|
||||
.build()
|
||||
.unwrap();
|
||||
|
||||
server.start();
|
||||
|
||||
for &(ref host, port) in server.bind_addrs() {
|
||||
info!(
|
||||
log,
|
||||
"gRPC API started";
|
||||
"port" => port,
|
||||
"host" => host,
|
||||
);
|
||||
}
|
||||
|
||||
let listen_addr = server
|
||||
.bind_addrs()
|
||||
.first()
|
||||
.ok_or_else(|| "gRPC server is not listening on any ports".to_string())?
|
||||
.clone();
|
||||
|
||||
let spawn_rpc = {
|
||||
server.start();
|
||||
for &(ref host, port) in server.bind_addrs() {
|
||||
info!(
|
||||
log,
|
||||
"gRPC API started";
|
||||
"port" => port,
|
||||
"host" => host,
|
||||
);
|
||||
}
|
||||
rpc_exit.and_then(move |_| {
|
||||
info!(log, "RPC Server shutting down");
|
||||
server
|
||||
@@ -97,5 +105,6 @@ pub fn start_server<T: BeaconChainTypes>(
|
||||
})
|
||||
};
|
||||
executor.spawn(spawn_rpc);
|
||||
rpc_exit_signal
|
||||
|
||||
Ok((rpc_exit_signal, listen_addr))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user