fluvio_spu_schema/client/
offset.rs

1use fluvio_protocol::{api::Request, link::ErrorCode};
2use fluvio_protocol::{Encoder, Decoder};
3use fluvio_protocol::record::ReplicaKey;
4use fluvio_protocol::record::Offset;
5
6use crate::COMMON_VERSION;
7
8use super::SpuClientApiKey;
9
10// -----------------------------------
11// FlvFetchOffsetsRequest
12// -----------------------------------
13
14/// sets of offset update send by SPU to clients
15#[derive(Decoder, Encoder, Default, Debug)]
16pub struct ReplicaOffsetUpdateRequest {
17    pub offsets: Vec<ReplicaOffsetUpdate>,
18}
19
20#[derive(Decoder, Encoder, Default, Debug)]
21pub struct ReplicaOffsetUpdate {
22    pub replica: ReplicaKey,
23    pub error_code: ErrorCode,
24    /// beginning offset for replica
25    pub start_offset: Offset,
26    /// offset for last record
27    pub leo: Offset,
28    /// offset for last committed record          
29    pub hw: Offset,
30}
31
32impl Request for ReplicaOffsetUpdateRequest {
33    const API_KEY: u16 = SpuClientApiKey::ReplicaOffsetUpdate as u16;
34    const DEFAULT_API_VERSION: i16 = COMMON_VERSION;
35    type Response = ReplicaOffsetUpdateResponse;
36}
37
38// no content, this is one way request
39#[derive(Decoder, Encoder, Default, Debug)]
40pub struct ReplicaOffsetUpdateResponse {}