pub struct HttpSinkDriver<D> { /* private fields */ }Expand description
An HttpDriver as a SinkDriver.
Per record: the whole-page write stops at the first failed request; the per-row write sends every record and reports each. As arrays: requests go out in order; the whole-page write stops at the first failure, and the per-row write reports the rows of every request after a delivered one as failed, so a delivered row is never reported failed — and a page none of whose requests was delivered fails as a whole.
Implementations§
Source§impl<D: HttpDriver> HttpSinkDriver<D>
impl<D: HttpDriver> HttpSinkDriver<D>
Trait Implementations§
Source§impl<D: HttpDriver> SinkDriver for HttpSinkDriver<D>
impl<D: HttpDriver> SinkDriver for HttpSinkDriver<D>
Source§fn connector_name(&self) -> &'static str
fn connector_name(&self) -> &'static str
The connector’s name, the
connector metric label.Source§fn config_schema(&self) -> Value
fn config_schema(&self) -> Value
The JSON Schema of the connector’s config.
Source§fn dataset_uri(&self) -> String
fn dataset_uri(&self) -> String
The dataset this sink writes, for lineage (credential-free).
Source§fn call_context(&self) -> CallContext
fn call_context(&self) -> CallContext
The connector’s own call defaults (timeout, retry). The run’s context
is layered over it.
Source§fn check<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
calls: &'life1 CallSlot,
ctx: &'life2 CheckContext,
) -> Pin<Box<dyn Future<Output = Result<CheckReport, FaucetError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn check<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
calls: &'life1 CallSlot,
ctx: &'life2 CheckContext,
) -> Pin<Box<dyn Future<Output = Result<CheckReport, FaucetError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
A non-mutating preflight probe.
Source§fn batch_atomicity(&self) -> BatchAtomicity
fn batch_atomicity(&self) -> BatchAtomicity
What a failed write leaves behind.
Source§fn write<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
calls: &'life1 CallSlot,
rows: &'life2 [Value],
policy: RowPolicy,
) -> Pin<Box<dyn Future<Output = Result<PageWrite, FaucetError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn write<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
calls: &'life1 CallSlot,
rows: &'life2 [Value],
policy: RowPolicy,
) -> Pin<Box<dyn Future<Output = Result<PageWrite, FaucetError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Write one page. Under
RowPolicy::PerRow, report the rows that
failed on their own in PageWrite::failed; an Err means no row of
the call was written.Source§fn flush<'life0, 'life1, 'async_trait>(
&'life0 self,
calls: &'life1 CallSlot,
) -> Pin<Box<dyn Future<Output = Result<(), FaucetError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn flush<'life0, 'life1, 'async_trait>(
&'life0 self,
calls: &'life1 CallSlot,
) -> Pin<Box<dyn Future<Output = Result<(), FaucetError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Make buffered writes durable.
Source§fn write_modes(&self) -> &'static [WriteMode]
fn write_modes(&self) -> &'static [WriteMode]
The write modes this instance applies. Must include
WriteMode::Overwrite exactly when staging is
Some (DriverSink::check_declarations).Source§fn dedups_by_key(&self) -> bool
fn dedups_by_key(&self) -> bool
Whether this instance is configured to merge rows by key
(
write_mode: upsert|delete with a key).Source§fn write_is_replay_safe(&self) -> bool
fn write_is_replay_safe(&self) -> bool
Whether replaying a page after an ambiguous failure converges.
Source§fn staged_load(&self) -> bool
fn staged_load(&self) -> bool
Whether the destination bulk-loads through an object-store stage.
Source§fn capabilities(&self, derived: Capabilities) -> Capabilities
fn capabilities(&self, derived: Capabilities) -> Capabilities
Adjust the capabilities
DriverSink derived, for a fact no
primitive expresses (how unknown fields are treated, scoped
overwrite). Default: unchanged.Source§fn sink_guarantee(&self, derived: SinkGuarantee) -> SinkGuarantee
fn sink_guarantee(&self, derived: SinkGuarantee) -> SinkGuarantee
Adjust the delivery guarantee
DriverSink derived (an external
target whose keyed convergence faucet cannot vouch for). Default:
unchanged.Source§fn staging(&self) -> Option<&dyn StagingDriver>
fn staging(&self) -> Option<&dyn StagingDriver>
The overwrite primitives.
Source§fn commit_tokens(&self) -> Option<&dyn CommitTokenDriver>
fn commit_tokens(&self) -> Option<&dyn CommitTokenDriver>
The exactly-once primitives.
Source§fn cleanup(&self) -> Option<&dyn CleanupDriver>
fn cleanup(&self) -> Option<&dyn CleanupDriver>
The scoped-cleanup primitive.
Source§fn schema(&self) -> Option<&dyn SchemaDriver>
fn schema(&self) -> Option<&dyn SchemaDriver>
The schema primitives.
Source§fn rollback(&self) -> Option<&dyn RollbackDriver>
fn rollback(&self) -> Option<&dyn RollbackDriver>
The rollback primitives.
Source§fn columnar(&self) -> Option<&dyn ColumnarDriver>
fn columnar(&self) -> Option<&dyn ColumnarDriver>
Available on crate feature
arrow only.The columnar write primitive.
Source§fn readback_source(&self) -> Option<(String, Value)>
fn readback_source(&self) -> Option<(String, Value)>
A
(kind, config) source that reads the destination back.Source§fn complete_run<'life0, 'life1, 'async_trait>(
&'life0 self,
calls: &'life1 CallSlot,
) -> Pin<Box<dyn Future<Output = Result<(), FaucetError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn complete_run<'life0, 'life1, 'async_trait>(
&'life0 self,
calls: &'life1 CallSlot,
) -> Pin<Box<dyn Future<Output = Result<(), FaucetError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Finalize a successful, uncancelled run (after the terminal flush).
Source§fn local_outputs<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Vec<LocalOutput>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn local_outputs<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Vec<LocalOutput>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
The local files this instance created.
Source§fn set_call_context(&self, ctx: CallContext)
fn set_call_context(&self, ctx: CallContext)
The run’s call context, for a driver whose clients hold their own
(a storage backend). Most drivers use the slot they are handed.
Source§fn set_roundtrip_recorder(&self, recorder: Arc<RoundtripRecorder>)
fn set_roundtrip_recorder(&self, recorder: Arc<RoundtripRecorder>)
The run’s round-trip recorder, for a driver whose clients hold their
own.
Auto Trait Implementations§
impl<D> Freeze for HttpSinkDriver<D>where
D: Freeze,
impl<D> RefUnwindSafe for HttpSinkDriver<D>where
D: RefUnwindSafe,
impl<D> Send for HttpSinkDriver<D>where
D: Send,
impl<D> Sync for HttpSinkDriver<D>where
D: Sync,
impl<D> Unpin for HttpSinkDriver<D>where
D: Unpin,
impl<D> UnsafeUnpin for HttpSinkDriver<D>where
D: UnsafeUnpin,
impl<D> UnwindSafe for HttpSinkDriver<D>where
D: UnwindSafe,
Blanket Implementations§
impl<T> Allocation for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request