pub struct GatewayBridge { /* private fields */ }Expand description
Gateway-Bridge-Helper.
Lifecycle:
GatewayBridge::newmitGatewayBridgeConfig.- Optional
GatewayBridge::with_upstreamum den eigenen Bridge in eine bestehende Chain (z.B. von Wanne-GW zum eigenen Turm-GW) einzuhaengen. - Pro Edge:
GatewayBridge::delegate_forum eine neue Delegation auszustellen. GatewayBridge::chain_forreicht die Chain als Output fuer SPDP/SEDP-Properties.GatewayBridge::revoke_delegationentfernt einen Edge.
Implementations§
Source§impl GatewayBridge
impl GatewayBridge
Sourcepub fn new(config: GatewayBridgeConfig) -> Self
pub fn new(config: GatewayBridgeConfig) -> Self
Konstruktor.
Sourcepub fn with_upstream(&mut self, upstream_chain: DelegationChain)
pub fn with_upstream(&mut self, upstream_chain: DelegationChain)
Setzt eine Upstream-Chain. Diese wird in Self::chain_for
vor den Edge-Link gehaengt — Sub-Gateway-Chaining fuer
Doppelstern (Turm-GW unter Wanne-GW).
Validation der Upstream-Chain ist NICHT Teil des Bridge —
Caller muss vorher selbst validate_chain aufrufen, um
Mismatch-Profile-Fehlern vorzubeugen.
Sourcepub fn gateway_guid(&self) -> [u8; 16]
pub fn gateway_guid(&self) -> [u8; 16]
16-byte Gateway-GUID (Read-only).
Sourcepub fn delegate_for(
&mut self,
edge_guid: [u8; 16],
topic_patterns: Vec<String>,
partition_patterns: Vec<String>,
not_before: i64,
not_after: i64,
) -> GatewayBridgeResult<&DelegationLink>
pub fn delegate_for( &mut self, edge_guid: [u8; 16], topic_patterns: Vec<String>, partition_patterns: Vec<String>, not_before: i64, not_after: i64, ) -> GatewayBridgeResult<&DelegationLink>
Stellt eine neue Delegation fuer einen Edge-Peer aus. Wenn der Edge bereits delegiert war, wird der alte Link ueberschrieben (typisch bei Ephemeral-Edge-Rotation, Plan §Stufe j-f).
not_before und not_after sind absolute Unix-Sekunden;
topic_patterns/partition_patterns sind die Glob-Whitelist,
die der Edge im engsten Scope haben darf.
§Errors
GatewayBridgeError::DelegationFailed wenn der PKI-Sign-
Schritt fehlschlaegt (Cap-Verletzung, Key-Parse-Fehler).
Sourcepub fn revoke_delegation(
&mut self,
edge_guid: [u8; 16],
) -> GatewayBridgeResult<()>
pub fn revoke_delegation( &mut self, edge_guid: [u8; 16], ) -> GatewayBridgeResult<()>
Widerruft die aktive Delegation fuer einen Edge. Der Edge wird
in die Revocation-Liste aufgenommen und kann ueber
Self::take_revocations dem Discovery-Layer mitgeteilt werden.
§Errors
GatewayBridgeError::UnknownEdge wenn der Edge nicht aktiv ist.
Sourcepub fn chain_for(&self, edge_guid: &[u8; 16]) -> Option<DelegationChain>
pub fn chain_for(&self, edge_guid: &[u8; 16]) -> Option<DelegationChain>
Liefert die ausgehende Chain fuer einen Edge.
1-Hop-Bridge (kein Upstream): Chain = [Edge-Link],
origin_guid = gateway_guid.
n-Hop-Bridge (mit Upstream): Chain = upstream.links ++ [Edge-Link], origin_guid = upstream.origin_guid.
Returns None wenn der Edge nicht aktiv ist.
Sourcepub fn active_count(&self) -> usize
pub fn active_count(&self) -> usize
Anzahl aktiver Edge-Delegations.
Sourcepub fn iter_active(&self) -> impl Iterator<Item = (&[u8; 16], &DelegationLink)>
pub fn iter_active(&self) -> impl Iterator<Item = (&[u8; 16], &DelegationLink)>
Iteriert ueber alle aktiven Edge-Delegations.
Sourcepub fn take_revocations(&mut self) -> Vec<[u8; 16]>
pub fn take_revocations(&mut self) -> Vec<[u8; 16]>
Liest und leert die Revocation-Liste (Discovery-Layer ruft das pro SPDP-Beacon-Tick auf).
Sourcepub fn upstream(&self) -> Option<&DelegationChain>
pub fn upstream(&self) -> Option<&DelegationChain>
Lese-Zugriff auf den Upstream-Chain (nuetzlich fuer Logging / Metrics).
Sourcepub fn rotate_ephemerals<F>(
&mut self,
identities: &[EdgeIdentityConfig],
now: i64,
topic_patterns: Vec<String>,
partition_patterns: Vec<String>,
prefix_generator: F,
) -> (Vec<String>, Vec<(String, GatewayBridgeError)>)
pub fn rotate_ephemerals<F>( &mut self, identities: &[EdgeIdentityConfig], now: i64, topic_patterns: Vec<String>, partition_patterns: Vec<String>, prefix_generator: F, ) -> (Vec<String>, Vec<(String, GatewayBridgeError)>)
Rotiert Ephemeral-Edge-Identities deren Lifetime abgelaufen ist.
Workflow pro Ephemeral-Edge:
- Wenn Edge nicht aktiv → ueberspringen (init kommt via
delegate_fordurch den Caller). - Wenn
now < link.not_after - lifetime/N(N=Renewal-Window) → noch zu frisch, ueberspringen. - Sonst: neue GuidPrefix ziehen (
prefix_generator(name)), alten Edge revoken, neuendelegate_formitnow-basierten Zeitfenster ausstellen.
prefix_generator ist ein Pluggable-Hook (z.B. ChaCha20-RNG
oder system-RNG); der Bridge ist deterministic-testbar weil
die Zufalls-Quelle vom Caller kommt.
Returns Liste der rotierten Edge-Namen.
§Errors
Propagiert GatewayBridgeError::DelegationFailed wenn ein
neu-Sign fehlschlaegt — bricht aber NICHT die Loop-Schleife ab,
fehlerhafte Edges werden im Err-Tail-Vec gesammelt und der
Aufrufer kann entscheiden.
Trait Implementations§
Source§impl Clone for GatewayBridge
impl Clone for GatewayBridge
Source§fn clone(&self) -> GatewayBridge
fn clone(&self) -> GatewayBridge
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more