rocketmq_client_v4/protocols/header/
notify_consumer_ids_changed_request_header.rs

1use crate::protocols::mq_command::{MqCommand, HEADER_SERIALIZE_METHOD_PRIVATE};
2use bytes::{Buf, Bytes};
3use log::debug;
4use serde::Deserialize;
5
6#[derive(Deserialize)]
7#[allow(non_snake_case)]
8pub struct NotifyConsumerIdsChangedRequestHeader {
9    pub consumerGroup: String,
10}
11
12impl NotifyConsumerIdsChangedRequestHeader {
13    pub fn convert_from_cmd(cmd: &MqCommand) -> Self {
14        let body = &cmd.e_body;
15        let mut body = Bytes::copy_from_slice(body);
16        debug!(
17            "NotifyConsumerIdsChangedRequestHeader, extend:{:?}",
18            String::from_utf8(cmd.e_body.clone())
19        );
20        match cmd.header_serialize_method {
21            HEADER_SERIALIZE_METHOD_PRIVATE => {
22                let consumer_group_len = body.get_i16();
23                let _ = body.copy_to_bytes(consumer_group_len as usize);
24                let consumer_group_v_len = body.get_i32();
25                let consumer_group_body = body.copy_to_bytes(consumer_group_v_len as usize);
26                return Self {
27                    consumerGroup: String::from_utf8(consumer_group_body.to_vec()).unwrap(),
28                };
29            }
30            _ => {
31                let json =
32                    serde_json::from_slice::<NotifyConsumerIdsChangedRequestHeader>(&body.to_vec())
33                        .unwrap();
34                return json;
35            }
36        }
37    }
38}