Skip to main content

GrpcStreamConfig

Struct GrpcStreamConfig 

Source
pub struct GrpcStreamConfig {
Show 18 fields pub endpoint: String, pub service_name: String, pub method_name: String, pub request: Value, pub descriptor_set_path: PathBuf, pub auth: AuthSpec<GrpcAuth>, pub tls: Option<bool>, pub records_path: Option<String>, pub batch_size: usize, pub rpc_kind: RpcKind, pub max_messages: Option<usize>, pub terminate_on_error: bool, pub reconnect_initial_backoff: Duration, pub reconnect_max_backoff: Duration, pub reconnect_max_attempts: Option<u32>, pub reconnect_replay_from_start: bool, pub max_decoding_message_size: Option<usize>, pub max_encoding_message_size: Option<usize>,
}
Expand description

Configuration for the gRPC source.

Fields§

§endpoint: String

gRPC endpoint URL (e.g. "http://localhost:50051").

§service_name: String

Fully qualified service name (e.g. "mypackage.MyService").

§method_name: String

Method name (e.g. "ListUsers").

§request: Value

Request message as JSON. Fields are mapped to protobuf fields using the FileDescriptorSet.

§descriptor_set_path: PathBuf

Path to the compiled FileDescriptorSet file.

§auth: AuthSpec<GrpcAuth>

Authentication: either inline ({ type, config }) or a { ref: <name> } pointer to a shared provider in the CLI’s top-level auth: catalog.

§tls: Option<bool>

Whether to use TLS (detected from https:// in endpoint by default).

§records_path: Option<String>

JSONPath to extract records from the response. If not set, the entire response is returned as a single record.

§batch_size: usize

Records per emitted StreamPage. Defaults to DEFAULT_BATCH_SIZE.

For unary RPCs the source has no native paging primitive to honour this hint: the default Source::stream_pages impl buffers the full response and then chunks it in memory, bounding sink-side memory only.

For server-streaming RPCs (rpc_kind = "server_streaming") the source overrides stream_pages and flushes a page each time batch_size messages accumulate, bounding both source-side and sink-side memory. batch_size = 0 drains the entire stream into a single page.

§rpc_kind: RpcKind

Kind of RPC to invoke. Defaults to RpcKind::Unary.

§max_messages: Option<usize>

For RpcKind::ServerStreaming: maximum number of messages to consume before terminating the stream. None means consume until the server closes the stream (or the run is cancelled).

§terminate_on_error: bool

For RpcKind::ServerStreaming: if true, transient stream errors (server-side disconnects, transport errors, etc.) terminate the run with FaucetError::Source. When false (the default), the source reconnects with exponential backoff up to reconnect_max_attempts.

Ignored for RpcKind::Unary.

§reconnect_initial_backoff: Duration

For RpcKind::ServerStreaming reconnect: initial backoff delay before the first retry. Doubles after each failure up to reconnect_max_backoff. Defaults to 1s.

§reconnect_max_backoff: Duration

For RpcKind::ServerStreaming reconnect: maximum backoff cap. Defaults to 30s.

§reconnect_max_attempts: Option<u32>

For RpcKind::ServerStreaming reconnect: maximum reconnect attempts before surfacing the error. None (the default) means unlimited retries.

§reconnect_replay_from_start: bool

For RpcKind::ServerStreaming reconnect: whether the server replays the response stream from the beginning when the identical request is re-issued after a disconnect. Defaults to true.

Because the request is resolved once per run, a reconnect sends the same request — a stateless server therefore re-streams from message 0. When true the source skips the messages it already emitted before the disconnect, so consumers see each message once. Set to false only for servers that resume mid-stream on the same request (rare): there, skipping would drop genuinely-new messages, so every received message is emitted (at-least-once; duplicates possible).

§max_decoding_message_size: Option<usize>

Maximum size, in bytes, of a single inbound (decoded) gRPC message. None (the default) keeps tonic’s built-in 4 MiB limit. Raise this for sources that legitimately return large messages; a too-low limit surfaces as a decode error and aborts the call. Applies to both unary and server-streaming RPCs.

§max_encoding_message_size: Option<usize>

Maximum size, in bytes, of a single outbound (encoded) gRPC request message. None (the default) keeps tonic’s built-in limit. Rarely needs tuning for a data source, since requests are typically small.

Implementations§

Source§

impl GrpcStreamConfig

Source

pub fn new( endpoint: impl Into<String>, service_name: impl Into<String>, method_name: impl Into<String>, descriptor_set_path: impl Into<PathBuf>, ) -> Self

Create a new config with the required fields.

Source

pub fn request(self, request: Value) -> Self

Set the request message as JSON.

Source

pub fn auth(self, auth: GrpcAuth) -> Self

Set the authentication method (inline).

Source

pub fn tls(self, tls: bool) -> Self

Set the TLS mode explicitly.

Source

pub fn records_path(self, path: impl Into<String>) -> Self

Set the JSONPath for record extraction from the response.

Source

pub fn with_batch_size(self, batch_size: usize) -> Self

Set the per-page record count for Source::stream_pages.

Pass 0 to opt out of batching — the entire result set is emitted in a single StreamPage. For unary RPCs this is observably identical to any positive batch_size, since the full response is buffered before any page is yielded. For server-streaming RPCs, 0 drains the entire stream before yielding.

Source

pub fn rpc_kind(self, rpc_kind: RpcKind) -> Self

Set the RPC kind (unary or server-streaming).

Source

pub fn max_messages(self, max_messages: usize) -> Self

Cap the number of messages to consume from a server-streaming RPC. Ignored for unary RPCs.

Source

pub fn terminate_on_error(self, terminate_on_error: bool) -> Self

Whether transient server-streaming errors should terminate the run (true) or trigger a reconnect with exponential backoff (false, the default).

Source

pub fn reconnect_initial_backoff(self, backoff: Duration) -> Self

Set the initial reconnect backoff for server-streaming RPCs.

Source

pub fn reconnect_max_backoff(self, backoff: Duration) -> Self

Set the maximum reconnect backoff for server-streaming RPCs.

Source

pub fn reconnect_max_attempts(self, attempts: u32) -> Self

Cap the number of reconnect attempts for server-streaming RPCs.

Source

pub fn reconnect_replay_from_start(self, replay: bool) -> Self

Set whether the server replays the stream from the start on reconnect (default true). See reconnect_replay_from_start.

Source

pub fn max_decoding_message_size(self, bytes: usize) -> Self

Set the maximum inbound (decoded) gRPC message size in bytes.

Source

pub fn max_encoding_message_size(self, bytes: usize) -> Self

Set the maximum outbound (encoded) gRPC message size in bytes.

Trait Implementations§

Source§

impl Clone for GrpcStreamConfig

Source§

fn clone(&self) -> GrpcStreamConfig

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for GrpcStreamConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for GrpcStreamConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl JsonSchema for GrpcStreamConfig

Source§

fn schema_name() -> Cow<'static, str>

The name of the generated JSON Schema. Read more
Source§

fn schema_id() -> Cow<'static, str>

Returns a string that uniquely identifies the schema produced by this type. Read more
Source§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type. Read more
Source§

fn inline_schema() -> bool

Whether JSON Schemas generated for this type should be included directly in parent schemas, rather than being re-used where possible using the $ref keyword. Read more
Source§

impl Serialize for GrpcStreamConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,