use std::sync::atomic::AtomicI32;
use rocketmq_common::TimeUtils::current_nano;
use crate::base::message_status_enum::PutMessageStatus;
#[derive(Debug)]
pub(crate) struct GroupCommitRequest {
pub(crate) next_offset: i64,
pub(crate) flush_ok: Option<PutMessageStatus>,
pub(crate) ack_nums: AtomicI32,
pub(crate) dead_line: u64,
}
impl Default for GroupCommitRequest {
fn default() -> Self {
Self {
next_offset: 0,
flush_ok: None,
ack_nums: AtomicI32::new(1),
dead_line: 0,
}
}
}
impl GroupCommitRequest {
pub(crate) fn new(next_offset: i64, timeout_millis: u64) -> Self {
let dead_line = current_nano() + timeout_millis * 1_000_000;
Self {
next_offset,
dead_line,
..Self::default()
}
}
}