Skip to main content

rocketmq_remoting/protocol/header/
view_message_request_header.rs

1// Copyright 2023 The RocketMQ Rust Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15use cheetah_string::CheetahString;
16use rocketmq_macros::RequestHeaderCodecV2;
17use serde::Deserialize;
18use serde::Serialize;
19
20#[derive(Debug, Clone, Serialize, Deserialize, RequestHeaderCodecV2, Default)]
21pub struct ViewMessageRequestHeader {
22    pub topic: Option<CheetahString>,
23    pub offset: i64,
24}
25
26#[cfg(test)]
27mod tests {
28    use super::*;
29
30    #[test]
31    fn test_view_message_request_header_with_none_topic() {
32        let header = ViewMessageRequestHeader {
33            topic: None,
34            offset: 100,
35        };
36
37        assert!(header.topic.is_none());
38        assert_eq!(header.offset, 100);
39    }
40
41    #[test]
42    fn test_view_message_request_header_with_topic_value() {
43        let topic_name = CheetahString::from("test_topic");
44        let header = ViewMessageRequestHeader {
45            topic: Some(topic_name.clone()),
46            offset: 200,
47        };
48
49        assert!(header.topic.is_some());
50        assert_eq!(header.topic.unwrap(), topic_name);
51        assert_eq!(header.offset, 200);
52    }
53}