pub struct CooperationStatus {Show 16 fields
pub active: bool,
pub reason: Option<String>,
pub runtime: Option<String>,
pub stream: Option<StreamId>,
pub repository: Option<MeshRepositoryIdentity>,
pub protocol: (u32, u32),
pub features: Vec<String>,
pub heartbeat_seconds: u64,
pub expiry_seconds: u64,
pub endpoints: Vec<String>,
pub seeds: Vec<String>,
pub peers: Vec<PeerView>,
pub refused: Vec<RefusedView>,
pub counters: CooperationCounters,
pub journal: JournalTallies,
pub started_at: Option<String>,
}Expand description
The whole cooperation runtime, as every surface reports it: the command line, the HTTP surface and MCP all render this one value, so that a person and an agent asking the same question of the same runtime are never told different things.
It answers in one reading the three questions a mesh raises — is this runtime cooperating at all, what does it speak, and who is it linked to — and it stays answerable when the answer is no: an inactive runtime still reports its protocol range and the reason, rather than an absence the caller has to interpret.
use majordomus_cli::mesh::cooperation::CooperationStatus;
let running: CooperationStatus = cooperation.status();
assert_eq!(running.runtime.as_deref(), Some(cooperation.runtime_key()));
assert!(running.peers.is_empty(), "nothing is dialed until something dials");
// and where there is no runtime at all, the same shape says why
let none = CooperationStatus::inactive("the mesh declaration is disabled");
assert_eq!(none.protocol, running.protocol, "still answerable about what it speaks");Fields§
§active: boolWhether cooperation runs in this process.
reason: Option<String>Why not, when it does not.
runtime: Option<String>This runtime, <node>-<runtime>.
stream: Option<StreamId>This runtime’s current stream.
repository: Option<MeshRepositoryIdentity>The repository identity links are matched on.
protocol: (u32, u32)The link protocol range spoken.
features: Vec<String>The link features carried.
heartbeat_seconds: u64Seconds between heartbeats.
expiry_seconds: u64Seconds of silence before expiry.
endpoints: Vec<String>Where this runtime answers.
seeds: Vec<String>The declared seeds.
peers: Vec<PeerView>Every linked peer, by runtime key.
refused: Vec<RefusedView>Candidates refused, by endpoint.
counters: CooperationCountersCounters.
journal: JournalTalliesThe journal’s tallies.
started_at: Option<String>When cooperation started, RFC 3339.
Implementations§
Source§impl CooperationStatus
impl CooperationStatus
Sourcepub fn inactive(reason: &str) -> Self
pub fn inactive(reason: &str) -> Self
The status of a runtime where cooperation is not running, and why.
The protocol range and the features are still filled in, because what this executable would speak is knowable without a runtime and a person comparing two machines needs it precisely when one of them is not cooperating.
use majordomus_cli::mesh::cooperation::CooperationStatus;
let status = CooperationStatus::inactive("no mesh declaration in this repository");
assert!(!status.active);
assert!(status.reason.unwrap().contains("no mesh declaration"), "never a bare false");
assert!(!status.features.is_empty(), "what it would speak is known without a runtime");Trait Implementations§
Source§impl Clone for CooperationStatus
impl Clone for CooperationStatus
Source§fn clone(&self) -> CooperationStatus
fn clone(&self) -> CooperationStatus
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CooperationStatus
impl Debug for CooperationStatus
Source§impl<'de> Deserialize<'de> for CooperationStatus
impl<'de> Deserialize<'de> for CooperationStatus
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for CooperationStatus
impl JsonSchema for CooperationStatus
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read more