pub struct AppendInput {
pub records: AppendRecordBatch,
pub match_seq_num: Option<u64>,
pub fencing_token: Option<FencingToken>,
}This crate has been renamed to s2-sdk. Please update your Cargo.toml to use s2-sdk instead.
Expand description
Input for append requests.
Fieldsยง
ยงrecords: AppendRecordBatchThis crate has been renamed to s2-sdk. Please update your Cargo.toml to use s2-sdk instead.
Batch of records to append atomically, which must contain at least one record, and no more than 1000. The total size of a batch of records may not exceed 1MiB of metered bytes.
match_seq_num: Option<u64>This crate has been renamed to s2-sdk. Please update your Cargo.toml to use s2-sdk instead.
Enforce that the sequence number issued to the first record matches.
fencing_token: Option<FencingToken>This crate has been renamed to s2-sdk. Please update your Cargo.toml to use s2-sdk instead.
Enforce a fencing token which must have been previously set by a fence command record.
Implementationsยง
Sourceยงimpl AppendInput
impl AppendInput
Sourcepub fn new(records: impl Into<AppendRecordBatch>) -> Self
๐Deprecated since 0.21.1: This crate has been renamed to s2-sdk. Please update your Cargo.toml to use s2-sdk instead.
pub fn new(records: impl Into<AppendRecordBatch>) -> Self
This crate has been renamed to s2-sdk. Please update your Cargo.toml to use s2-sdk instead.
Create a new append input from record batch.
Examples found in repository?
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let token = std::env::var("S2_ACCESS_TOKEN")?;
9 let config = ClientConfig::new(token);
10 let basin: BasinName = "my-favorite-basin".parse()?;
11 let stream = "my-favorite-stream";
12 let stream_client = StreamClient::new(config, basin, stream);
13
14 let tail = stream_client.check_tail().await?;
15 if tail.seq_num == 0 {
16 println!("Empty stream");
17 return Ok(());
18 }
19
20 let latest_seq_num = tail.seq_num - 1;
21 let trim_request = CommandRecord::trim(latest_seq_num);
22
23 let append_record_batch = AppendRecordBatch::try_from_iter([trim_request])
24 .expect("valid batch with 1 command record");
25 let append_input = AppendInput::new(append_record_batch);
26 let _ = stream_client.append(append_input).await?;
27
28 println!("Trim requested");
29
30 Ok(())
31}More examples
9async fn main() -> Result<(), Box<dyn std::error::Error>> {
10 let token = std::env::var("S2_ACCESS_TOKEN")?;
11 let config = ClientConfig::new(token);
12 let basin: BasinName = "my-favorite-basin".parse()?;
13 let stream = "my-favorite-stream";
14 let stream_client = StreamClient::new(config, basin, stream);
15
16 let fencing_token = FencingToken::generate(32).expect("valid fencing token");
17
18 // Set the fencing token.
19 let fencing_token_record: AppendRecord = CommandRecord::fence(fencing_token.clone()).into();
20 let fencing_token_batch = AppendRecordBatch::try_from_iter([fencing_token_record])
21 .expect("valid batch with 1 append record");
22 let fencing_token_append_input = AppendInput::new(fencing_token_batch);
23 let set_fencing_token = stream_client.append(fencing_token_append_input).await?;
24
25 let match_seq_num = set_fencing_token.tail.seq_num;
26
27 // Stream of records
28 let append_stream = futures::stream::iter([
29 AppendRecord::new("record_1")?,
30 AppendRecord::new("record_2")?,
31 ]);
32
33 let append_records_batching_opts = AppendRecordsBatchingOpts::new()
34 .with_fencing_token(Some(fencing_token))
35 .with_match_seq_num(Some(match_seq_num));
36
37 let append_session_request =
38 AppendRecordsBatchingStream::new(append_stream, append_records_batching_opts);
39
40 let mut append_session_stream = stream_client.append_session(append_session_request).await?;
41
42 while let Some(next) = append_session_stream.next().await {
43 let next = next?;
44 println!("{next:#?}");
45 }
46
47 Ok(())
48}Sourcepub fn with_match_seq_num(self, match_seq_num: impl Into<u64>) -> Self
๐Deprecated since 0.21.1: This crate has been renamed to s2-sdk. Please update your Cargo.toml to use s2-sdk instead.
pub fn with_match_seq_num(self, match_seq_num: impl Into<u64>) -> Self
This crate has been renamed to s2-sdk. Please update your Cargo.toml to use s2-sdk instead.
Overwrite match sequence number.
Sourcepub fn with_fencing_token(self, fencing_token: FencingToken) -> Self
๐Deprecated since 0.21.1: This crate has been renamed to s2-sdk. Please update your Cargo.toml to use s2-sdk instead.
pub fn with_fencing_token(self, fencing_token: FencingToken) -> Self
This crate has been renamed to s2-sdk. Please update your Cargo.toml to use s2-sdk instead.
Overwrite fencing token.
Trait Implementationsยง
Sourceยงimpl Clone for AppendInput
impl Clone for AppendInput
Sourceยงfn clone(&self) -> AppendInput
fn clone(&self) -> AppendInput
1.0.0 (const: unstable) ยท Sourceยงfn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSourceยงimpl Debug for AppendInput
impl Debug for AppendInput
Sourceยงimpl Default for AppendInput
impl Default for AppendInput
Sourceยงfn default() -> AppendInput
fn default() -> AppendInput
Sourceยงimpl MeteredBytes for AppendInput
impl MeteredBytes for AppendInput
Sourceยงfn metered_bytes(&self) -> u64
fn metered_bytes(&self) -> u64
This crate has been renamed to s2-sdk. Please update your Cargo.toml to use s2-sdk instead.
Auto Trait Implementationsยง
impl Freeze for AppendInput
impl RefUnwindSafe for AppendInput
impl Send for AppendInput
impl Sync for AppendInput
impl Unpin for AppendInput
impl UnsafeUnpin for AppendInput
impl UnwindSafe for AppendInput
Blanket Implementationsยง
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
Sourceยงimpl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Sourceยงfn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request