#![cfg_attr(docsrs, feature(doc_cfg))]
#![deny(unsafe_code)]
#![warn(missing_docs)]
#![cfg_attr(test, allow(clippy::unwrap_used, clippy::expect_used, clippy::panic))]
pub use xds_cache as cache;
pub use xds_core as core;
pub use xds_server as server;
pub use xds_types as types;
pub mod prelude {
pub use xds_core::{
BoxResource, NodeHash, Resource, ResourceRegistry, ResourceTypeInfo, ResourceVersion,
SharedResourceRegistry, TypeUrl, XdsError, XdsResult,
};
pub use xds_cache::{
Cache, CacheStats, ShardedCache, Snapshot, SnapshotBuilder, Watch, WatchId,
};
pub use xds_server::{ServerConfig, StreamContext, StreamId, XdsServer, XdsServerBuilder};
#[cfg(feature = "tls")]
#[cfg_attr(docsrs, doc(cfg(feature = "tls")))]
pub use xds_server::{ServerTlsConfig, TlsIdentity};
}
pub mod version {
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
pub const MSRV: &str = "1.75";
pub fn version_string() -> String {
format!("nebucloud-xds {} (MSRV {})", VERSION, MSRV)
}
}
#[cfg(test)]
mod tests {
use super::prelude::*;
use std::sync::Arc;
#[test]
fn prelude_imports_work() {
let cache = ShardedCache::new();
let node = NodeHash::from_id("test-node");
let snapshot = Snapshot::builder().version("v1").build();
cache.set_snapshot(node, snapshot);
let retrieved = cache.get_snapshot(node).unwrap();
assert_eq!(retrieved.version(), "v1");
}
#[test]
fn server_builder_works() {
let cache = Arc::new(ShardedCache::new());
let result = XdsServer::builder()
.cache(cache)
.enable_sotw()
.enable_delta()
.build();
assert!(result.is_ok());
}
#[test]
fn version_info() {
let version = super::version::version_string();
assert!(version.contains("nebucloud-xds"));
}
}