v0.2.7-pre.010

This commit is contained in:
2026-08-23 00:12:39 +02:00
parent 98bf88e431
commit 1391858972
14 changed files with 838 additions and 29 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: crates/ksp-onchain-transport-lib/USAGE.md -->
<!-- version: 15 -->
<!-- version: 16 -->
# Utilisation de `ksp-onchain-transport-lib`
@@ -126,6 +126,34 @@ La même session expose `program_subscribe()` avec `SolanaProgramSubscribeConfig
Les trois wrappers retournent le même handle `WsSubscription<T>` : reconnect, resubscribe, overflow, cause terminale et unsubscribe restent donc uniformes. Aucun wrapper public n'accepte un nom de méthode JSON-RPC arbitraire ni un remote subscription ID.
### Lot stable B : signature, slot et root
Depuis `0.2.7-pre.010`, la session expose également :
```rust
let signature_config = ksp_onchain_transport_lib::SolanaSignatureSubscribeConfig::new(
Some(ksp_onchain_transport_lib::SolanaCommitment::Finalized),
Some(true),
);
let mut signature_subscription = match session.signature_subscribe("<base58-signature>", Some(&signature_config)).await {
Ok(value) => value,
Err(error) => return Err(error),
};
while let Some(notification) = signature_subscription.recv().await {
let notification = match notification {
Ok(value) => value,
Err(error) => return Err(error),
};
if notification.value().is_terminal() {
break;
}
}
```
Avec `enableReceivedNotification = true`, `ReceivedSignature` peut arriver avant la variante terminale `Processed { err }`. La variante terminale ferme automatiquement le handle KSP, sans `signatureUnsubscribe` supplémentaire et sans resubscribe lors d'une reconnexion ultérieure. Une cancellation explicite avant cette notification terminale reste possible via `unsubscribe().await`.
`slot_subscribe().await` retourne un `WsSubscription<SolanaSlotNotification>` dont les getters exposent `slot`, `parent` et `root`. `root_subscribe().await` retourne un `WsSubscription<u64>`. Ces deux méthodes n'acceptent aucune configuration ni aucun paramètre RPC.
### Reconnect automatique borné
Depuis `0.2.7-pre.007`, les settings de session contrôlent réellement le reconnect physique. Une perte de socket publie `Reconnecting { attempt }`, invalide les remote IDs et incrémente `continuity_gap_count`. Avec la policy par défaut `ActiveSubscriptions`, les handles logiques gardent leur `WsSubscriptionId` et passent temporairement en `Resubscribing`; l'actor recrée leurs subscriptions dans l'ordre local avant de republier `Active`.
@@ -150,7 +178,7 @@ Le consumer doit traiter `overflow_count` et `continuity_gap_count` comme deux s
```rust
let session = ksp_onchain_transport_lib::WsSession::connect(endpoint).await?;
// ... account_subscribe/program_subscribe/logs_subscribe puis recv()/unsubscribe() ...
// ... wrappers standard puis recv()/unsubscribe() ...
session.close().await?;
```