pub struct AppendInput {
pub records: AppendRecordBatch,
pub match_seq_num: Option<u64>,
pub fencing_token: Option<FencingToken>,
}๐Deprecated since 0.21.1: 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: AppendRecordBatch๐Deprecated since 0.21.1: This 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>๐Deprecated since 0.21.1: 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>๐Deprecated since 0.21.1: 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
s2-sdk. Please update your Cargo.toml to use s2-sdk instead.Create a new append input from record batch.
Examples found in repository?
examples/explicit_trim.rs (line 25)
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
examples/producer.rs (line 22)
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
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
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
Returns a duplicate of the value. Read more
1.0.0 ยท Sourceยงfn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
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
Returns the โdefault valueโ for a type. Read more
Sourceยงimpl MeteredBytes for AppendInput
impl MeteredBytes for AppendInput
Sourceยงfn metered_bytes(&self) -> u64
fn metered_bytes(&self) -> u64
๐Deprecated since 0.21.1: This crate has been renamed to
s2-sdk. Please update your Cargo.toml to use s2-sdk instead.Return the metered bytes of the object.
Auto Trait Implementationsยง
impl Freeze for AppendInput
impl RefUnwindSafe for AppendInput
impl Send for AppendInput
impl Sync for AppendInput
impl Unpin 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
Mutably borrows from an owned value. Read more
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>
Wrap the input message
T in a tonic::Request