fluvio_spu_schema/client/
api.rs1use tracing::trace;
5use std::convert::TryInto;
6use std::io::Error as IoError;
7
8use fluvio_protocol::bytes::Buf;
9use fluvio_protocol::Encoder;
10use fluvio_protocol::api::api_decode;
11use fluvio_protocol::api::RequestMessage;
12use fluvio_protocol::api::RequestHeader;
13use fluvio_protocol::api::ApiMessage;
14
15use super::SpuClientApiKey;
16use super::offset::ReplicaOffsetUpdateRequest;
17
18#[derive(Debug, Encoder)]
20pub enum SpuClientRequest {
21 #[fluvio(tag = 0)]
22 ReplicaOffsetUpdateRequest(RequestMessage<ReplicaOffsetUpdateRequest>),
23}
24
25impl Default for SpuClientRequest {
26 fn default() -> Self {
27 Self::ReplicaOffsetUpdateRequest(RequestMessage::<ReplicaOffsetUpdateRequest>::default())
28 }
29}
30
31impl ApiMessage for SpuClientRequest {
32 type ApiKey = SpuClientApiKey;
33
34 fn decode_with_header<T>(src: &mut T, header: RequestHeader) -> Result<Self, IoError>
35 where
36 Self: Default + Sized,
37 Self::ApiKey: Sized,
38 T: Buf,
39 {
40 trace!("decoding with header: {:#?}", header);
41 match header.api_key().try_into()? {
42 SpuClientApiKey::ReplicaOffsetUpdate => {
43 api_decode!(Self, ReplicaOffsetUpdateRequest, src, header)
44 }
45 }
46 }
47}