extern crate slog; mod compute_light_client_updates; pub mod config; mod metrics; mod notifier; pub mod builder; pub mod error; use beacon_chain::BeaconChain; use lighthouse_network::{Enr, Multiaddr, NetworkGlobals}; use std::net::SocketAddr; use std::sync::Arc; pub use beacon_chain::{BeaconChainTypes, Eth1ChainBackend}; pub use builder::ClientBuilder; pub use config::{ClientGenesis, Config as ClientConfig}; pub use eth2_config::Eth2Config; /// The core "beacon node" client. /// /// Holds references to running services, cleanly shutting them down when dropped. pub struct Client { beacon_chain: Option>>, network_globals: Option>>, /// Listen address for the standard eth2.0 API, if the service was started. http_api_listen_addr: Option, /// Listen address for the HTTP server which serves Prometheus metrics. http_metrics_listen_addr: Option, } impl Client { /// Returns an `Arc` reference to the client's `BeaconChain`, if it was started. pub fn beacon_chain(&self) -> Option>> { self.beacon_chain.clone() } /// Returns the address of the client's standard eth2.0 API server, if it was started. pub fn http_api_listen_addr(&self) -> Option { self.http_api_listen_addr } /// Returns the address of the client's HTTP Prometheus metrics server, if it was started. pub fn http_metrics_listen_addr(&self) -> Option { self.http_metrics_listen_addr } /// Returns the list of libp2p addresses the client is listening to. pub fn libp2p_listen_addresses(&self) -> Option> { self.network_globals.as_ref().map(|n| n.listen_multiaddrs()) } /// Returns the local libp2p ENR of this node, for network discovery. pub fn enr(&self) -> Option { self.network_globals.as_ref().map(|n| n.local_enr()) } }