fluvio_spu_schema/server/
update_offset.rs

1//!
2//! # Update Offsets
3//!
4
5use fluvio_protocol::api::Request;
6use fluvio_protocol::{Encoder, Decoder};
7use fluvio_protocol::record::Offset;
8
9use crate::errors::ErrorCode;
10use super::SpuServerApiKey;
11
12#[derive(Decoder, Encoder, Default, Debug)]
13pub struct OffsetUpdate {
14    pub offset: Offset,
15    pub session_id: u32,
16}
17
18/// send out current offset to SPU
19#[derive(Decoder, Encoder, Default, Debug)]
20pub struct UpdateOffsetsRequest {
21    pub offsets: Vec<OffsetUpdate>,
22}
23
24impl Request for UpdateOffsetsRequest {
25    const API_KEY: u16 = SpuServerApiKey::UpdateOffsets as u16;
26    const DEFAULT_API_VERSION: i16 = 0;
27    type Response = UpdateOffsetsResponse;
28}
29
30impl UpdateOffsetsRequest {
31    pub fn new(offsets: Vec<OffsetUpdate>) -> Self {
32        Self { offsets }
33    }
34}
35
36#[derive(Decoder, Encoder, Default, Debug)]
37pub struct OffsetUpdateStatus {
38    pub session_id: u32,
39    pub error: ErrorCode,
40}
41
42#[derive(Encoder, Decoder, Default, Debug)]
43pub struct UpdateOffsetsResponse {
44    pub status: Vec<OffsetUpdateStatus>,
45}