kf_protocol_api/
lib.rs

1mod api;
2mod kf_api;
3mod request;
4mod response;
5mod error;
6mod batch;
7mod record;
8mod common;
9mod group_protocol_metadata;
10mod group_assigment;
11mod flv_errors;
12
13pub type Offset = i64;
14pub type Size = u32;
15
16pub use self::api::KfApiKey;
17pub use self::api::KfRequestMessage;
18pub use self::api::Request;
19pub use self::api::RequestHeader;
20pub use self::kf_api::AllKfApiKey;
21pub use self::request::RequestMessage;
22
23pub use self::response::ResponseMessage;
24
25pub use self::batch::Batch;
26pub use self::batch::BatchRecords;
27pub use self::batch::DefaultBatch;
28pub use self::batch::DefaultBatchRecords;
29pub use self::record::DefaultRecord;
30pub use self::record::RecordSet;
31pub use self::record::Record;
32pub use self::record::RecordHeader;
33pub use self::batch::BATCH_HEADER_SIZE;
34pub use self::batch::BATCH_PREAMBLE_SIZE;
35pub use self::group_protocol_metadata::ProtocolMetadata;
36pub use self::group_protocol_metadata::Metadata;
37pub use self::group_assigment::GroupAssignment;
38pub use self::group_assigment::Assignment;
39pub use self::common::*;
40
41pub use self::error::ErrorCode;
42pub use self::flv_errors::FlvErrorCode;
43
44pub const MAX_BYTES: i32 = 52428800;
45
46#[macro_export]
47macro_rules! api_decode {
48    ($api:ident,$req:ident,$src:expr,$header:expr) => {{
49        use kf_protocol::Decoder;
50        let request = $req::decode_from($src, $header.api_version())?;
51        Ok($api::$req(RequestMessage::new($header, request)))
52    }};
53}
54
55/// Offset information about Partition
56pub trait PartitionOffset {
57
58    /// last offset that was committed
59    fn last_stable_offset(&self) -> i64;
60
61    // beginning offset for the partition
62    fn start_offset(&self) -> i64;
63
64
65}