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>,
}
Available on crate features source-grpc and source-rest only.
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>, ) -> GrpcStreamConfig

Create a new config with the required fields.

Source

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

Set the request message as JSON.

Source

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

Set the authentication method (inline).

Source

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

Set the TLS mode explicitly.

Source

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

Set the JSONPath for record extraction from the response.

Source

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

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) -> GrpcStreamConfig

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

Source

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

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) -> GrpcStreamConfig

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) -> GrpcStreamConfig

Set the initial reconnect backoff for server-streaming RPCs.

Source

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

Set the maximum reconnect backoff for server-streaming RPCs.

Source

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

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

Source

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

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) -> GrpcStreamConfig

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

Source

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

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<(), Error>

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

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

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<GrpcStreamConfig, <__D as Deserializer<'de>>::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 as Serializer>::Ok, <__S as Serializer>::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> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

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

Source§

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

Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
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> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

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

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
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<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> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
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> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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> Allocation for T
where T: RefUnwindSafe + Send + Sync,

Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,