-
Notifications
You must be signed in to change notification settings - Fork 243
Expand file tree
/
Copy pathlite_pull_consume_request.rs
More file actions
71 lines (60 loc) · 2.25 KB
/
lite_pull_consume_request.rs
File metadata and controls
71 lines (60 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// Copyright 2023 The RocketMQ Rust Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
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;
/// Request to consume messages from a specific queue.
///
/// This structure is passed from pull tasks to the poll() API via an unbounded channel.
#[derive(Clone)]
pub struct LitePullConsumeRequest {
/// Messages to be consumed.
pub(crate) messages: Vec<ArcMut<MessageExt>>,
/// The message queue these messages belong to.
pub(crate) message_queue: MessageQueue,
/// The process queue managing this queue's state.
pub(crate) process_queue: Arc<ProcessQueue>,
}
impl LitePullConsumeRequest {
/// Creates a new consume request.
pub fn new(
messages: Vec<ArcMut<MessageExt>>,
message_queue: MessageQueue,
process_queue: Arc<ProcessQueue>,
) -> Self {
Self {
messages,
message_queue,
process_queue,
}
}
/// Returns the messages in this request.
pub fn messages(&self) -> &[ArcMut<MessageExt>] {
&self.messages
}
/// Returns the message queue for this request.
pub fn message_queue(&self) -> &MessageQueue {
&self.message_queue
}
/// Returns the process queue for this request.
pub fn process_queue(&self) -> &Arc<ProcessQueue> {
&self.process_queue
}
/// Consumes the request and returns its components.
pub fn into_parts(self) -> (Vec<ArcMut<MessageExt>>, MessageQueue, Arc<ProcessQueue>) {
(self.messages, self.message_queue, self.process_queue)
}
}