kf_protocol_api/
kf_api.rs

1use kf_protocol_derive::Encode;
2use kf_protocol_derive::Decode;
3
4#[fluvio_kf(encode_discriminant)]
5#[derive(PartialEq, Debug, Clone, Copy, Encode, Decode)]
6#[repr(u16)]
7pub enum AllKfApiKey {
8    Produce = 0,
9    Fetch = 1,
10    ListOffsets = 2,
11    Metadata = 3,
12    LeaderAndIsr = 4,
13    StopReplica = 5,
14    UpdateMetadata = 6,
15    ControlShutdown = 7,
16    OffsetCommit = 8,
17    OffsetFetch = 9,
18    FindCoordinator = 10,
19    JoinGroup = 11,
20    Heartbeat = 12,
21    LeaveGroup = 13,
22    SyncGroup = 14,
23    DescribeGroup = 15,
24    ListGroups = 16,
25    SaslHandshake = 17,
26    ApiVersion = 18,
27    CreateTopics = 19,
28    DeleteTopics = 20,
29    DeleteRecords = 21,
30    InitProducerId = 22,
31    OffsetForLeaderEpoch = 23,
32    AddPartitionsToTxn = 24,
33    AddOffsetsToTxn = 25,
34    EndTxn = 26,
35    WriteTxnMarkers = 27,
36    TxnOffsetCommit = 28,
37    DescribeAcls = 29,
38    CreateAcls = 30,
39    DeleteAcls = 31,
40    DescribeConfigs = 32,
41    AlterConfigs = 33,
42    AlterReplicaLogDirs = 34,
43    DescribeLogDirs = 35,
44    SaslAuthenticate = 36,
45    CreatePartitions = 37,
46    CreateDelegationToken = 38,
47    RenewDelegationToken = 39,
48    ExpireDelegationToken = 40,
49    DescribeDelegationToken = 41,
50    DeleteGroups = 42,
51}
52
53impl Default for AllKfApiKey {
54    fn default() -> AllKfApiKey {
55        AllKfApiKey::ApiVersion
56    }
57}
58
59#[cfg(test)]
60mod test {
61
62    use crate::AllKfApiKey;
63    use kf_protocol::Decoder;
64    use kf_protocol::Encoder;
65    use std::io::Cursor;
66
67    #[test]
68    fn test_decode_enum_not_enough() {
69        let data = [0x11]; // only one value
70
71        let mut value = AllKfApiKey::ApiVersion;
72        let result = value.decode(&mut Cursor::new(&data), 0);
73        assert!(result.is_err());
74    }
75
76    #[test]
77    fn test_decode_api_enum() {
78        let data = [0x00, 0x03];
79
80        let mut value = AllKfApiKey::Metadata;
81        let result = value.decode(&mut Cursor::new(&data), 0);
82        assert!(result.is_ok());
83        assert_eq!(value, AllKfApiKey::Metadata);
84    }
85
86    #[test]
87    fn test_encode_enum() {
88        let mut src = vec![];
89        let value = AllKfApiKey::Metadata;
90        let result = value.encode(&mut src, 0);
91        assert!(result.is_ok());
92        assert_eq!(src.len(), 2);
93        assert_eq!(src[0], 0x00);
94        assert_eq!(src[1], AllKfApiKey::Metadata as u8);
95    }
96
97}