use std::sync::Arc;
use rocketmq_common::common::message::message_ext::MessageExt;
use rocketmq_common::common::message::message_queue::MessageQueue;
use rocketmq_rust::ArcMut;
use crate::consumer::consumer_impl::process_queue::ProcessQueue;
#[derive(Clone)]
pub struct LitePullConsumeRequest {
pub(crate) messages: Vec<ArcMut<MessageExt>>,
pub(crate) message_queue: MessageQueue,
pub(crate) process_queue: Arc<ProcessQueue>,
}
impl LitePullConsumeRequest {
pub fn new(
messages: Vec<ArcMut<MessageExt>>,
message_queue: MessageQueue,
process_queue: Arc<ProcessQueue>,
) -> Self {
Self {
messages,
message_queue,
process_queue,
}
}
pub fn messages(&self) -> &[ArcMut<MessageExt>] {
&self.messages
}
pub fn message_queue(&self) -> &MessageQueue {
&self.message_queue
}
pub fn process_queue(&self) -> &Arc<ProcessQueue> {
&self.process_queue
}
pub fn into_parts(self) -> (Vec<ArcMut<MessageExt>>, MessageQueue, Arc<ProcessQueue>) {
(self.messages, self.message_queue, self.process_queue)
}
}