Skip to main content

rdap_stream/
lib.rs

1//! Async streaming API for batch RDAP queries.
2//!
3//! The streaming methods on `RdapClient` return `ReceiverStream` values
4//! that yield events as results arrive.
5
6#![forbid(unsafe_code)]
7
8use rdap_types::{
9    error::RdapError,
10    AsnResponse, DomainResponse, IpResponse, NameserverResponse,
11};
12
13// ── Events ────────────────────────────────────────────────────────────────────
14
15/// Emitted by `stream_domain` for each queried domain.
16#[derive(Debug)]
17pub enum DomainEvent {
18    Result(Box<DomainResponse>),
19    Error {
20        query: String,
21        error: RdapError,
22    },
23}
24
25/// Emitted by `stream_ip` for each queried IP address.
26#[derive(Debug)]
27pub enum IpEvent {
28    Result(Box<IpResponse>),
29    Error {
30        query: String,
31        error: RdapError,
32    },
33}
34
35/// Emitted by `stream_asn` for each queried ASN.
36#[derive(Debug)]
37pub enum AsnEvent {
38    Result(Box<AsnResponse>),
39    Error {
40        query: String,
41        error: RdapError,
42    },
43}
44
45/// Emitted by `stream_nameserver` for each queried nameserver.
46#[derive(Debug)]
47pub enum NameserverEvent {
48    Result(Box<NameserverResponse>),
49    Error {
50        query: String,
51        error: RdapError,
52    },
53}
54
55// ── Configuration ─────────────────────────────────────────────────────────────
56
57/// Configuration for streaming queries.
58#[derive(Debug, Clone)]
59pub struct StreamConfig {
60    /// Channel buffer size (controls back-pressure). Default: 32.
61    pub buffer_size: usize,
62}
63
64impl Default for StreamConfig {
65    fn default() -> Self {
66        Self { buffer_size: 32 }
67    }
68}