use bytes::Bytes;
#[derive(Debug, Clone)]
pub struct ShareConsumerRecord {
pub topic: String,
pub partition: i32,
pub offset: i64,
pub timestamp: i64,
pub key: Option<Bytes>,
pub value: Option<Bytes>,
pub delivery_count: i16,
}
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
pub enum ShareAckMode {
#[default]
Implicit,
Explicit,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ShareAckType {
Accept,
Release,
Reject,
}
impl ShareAckType {
pub(crate) fn wire(self) -> i8 {
match self {
ShareAckType::Accept => 1,
ShareAckType::Release => 2,
ShareAckType::Reject => 3,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
use assert2::assert;
#[test]
fn ack_wire_codes() {
assert!(ShareAckType::Accept.wire() == 1);
assert!(ShareAckType::Release.wire() == 2);
assert!(ShareAckType::Reject.wire() == 3);
}
#[test]
fn ack_mode_default_is_implicit() {
assert!(ShareAckMode::default() == ShareAckMode::Implicit);
}
}