Promote pipeline-parallel-inference to a first-class app and consolidate observability on the datastream wire, decoupling the dashboard crate from `distribution`. - apps/pipeline-parallel-inference: move the example out of `examples/` into `apps/` as its own workspace, rename binaries to `pp-worker`/`pp-orchestrator`, and strip release binaries - cluster: add `ClusterNode`, a synchronous facade over the actorized distribution protocol (IrohDriver + per-node Runtime hosting Swim/Registry/Metadata/Directory actors with a `MembershipFanout`), replacing ad-hoc `driver.node()`/`tick()` call sites - fleet: add per-node fleet telemetry that ships identity/resource records as `DatastreamFrame`s over the cluster transport to the orchestrator's `DatastreamSink`, folded into a `FleetView` on a 3s tick - provision: add best-effort, opt-in SSH boot-phase telemetry (`PP_DEPLOY_KEY`) that streams rented-node boot logs onto the orchestrator's datastream as `proc.boot.<stage>.*` - dashboard: rewire the crate dependency from `distribution` to `datastream`, drop the standalone `swactor-datastream-dashboard` binary, and rewrite `datastream_source.rs` to demux per-node frames into Overview/Distribution/Fleet views with live-node TTL filtering - distribution: refresh dist/netmap plugin copy and README from "Kademlia routing" to gossip-directory terminology Signed-off-by: Zachery Aaron Shores-Chmielewski <zacheryasc@gmail.com>
54 lines
1.4 KiB
Rust
54 lines
1.4 KiB
Rust
pub mod actor;
|
|
pub mod extension;
|
|
pub mod process_observer;
|
|
pub mod worker;
|
|
|
|
pub use process_observer::ProcessOutputObserver;
|
|
|
|
// Re-export well-known environment key types for convenient access.
|
|
pub use actor::{SpawnTimestamp, LogicalName, ServiceBinding, ExitValue, CapabilitySet};
|
|
|
|
pub(crate) mod channel;
|
|
pub(crate) mod error;
|
|
pub use error::Error;
|
|
|
|
// Re-export identity hashing types for ActorAddress-keyed collections.
|
|
pub use delivery::{AddrBuildHasher, AddrMap, AddrSet};
|
|
|
|
pub mod config;
|
|
pub(crate) mod delivery;
|
|
pub mod stats;
|
|
|
|
pub mod runtime;
|
|
|
|
#[cfg(feature = "std")]
|
|
pub mod std;
|
|
|
|
// Platform-aware Instant: web_time on wasm, std::time on native.
|
|
// web_time is a no-op re-export of std::time::Instant on non-wasm targets.
|
|
#[cfg(feature = "wasm")]
|
|
pub(crate) use web_time::Instant;
|
|
#[cfg(not(feature = "wasm"))]
|
|
pub(crate) use ::std::time::Instant;
|
|
|
|
#[cfg(feature = "getrandom")]
|
|
pub(crate) fn get_random(buf: &mut [u8]) {
|
|
getrandom::getrandom(buf).unwrap()
|
|
}
|
|
|
|
#[cfg(any(kani, test))]
|
|
mod guarantees;
|
|
|
|
#[cfg(all(feature = "no_random", not(feature = "getrandom")))]
|
|
pub(crate) fn get_random(buf: &mut [u8]) {
|
|
use core::sync::atomic::{AtomicUsize, Ordering};
|
|
|
|
static COUNTER: AtomicUsize = AtomicUsize::new(0);
|
|
|
|
let value = COUNTER.fetch_add(1, Ordering::Relaxed);
|
|
let bytes = value.to_ne_bytes();
|
|
|
|
for (i, byte) in buf.iter_mut().enumerate() {
|
|
*byte = bytes[i % core::mem::size_of::<usize>()];
|
|
}
|
|
}
|