rocketmq_client_rust/consumer/store/
offset_serialize.rs1use std::collections::HashMap;
16use std::sync::atomic::Ordering;
17
18use rocketmq_protocol::protocol::RemotingSerializable;
19use serde::Deserialize;
20use serde::Serialize;
21use tracing::warn;
22
23use crate::consumer::store::offset_serialize_wrapper::OffsetSerializeWrapper;
24
25#[derive(Serialize, Deserialize, Debug, Default)]
26#[serde(rename_all = "camelCase")]
27pub struct OffsetSerialize {
28 pub offset_table: HashMap<String, i64>,
29}
30
31impl From<OffsetSerializeWrapper> for OffsetSerialize {
32 fn from(wrapper: OffsetSerializeWrapper) -> Self {
33 let mut offset_table = HashMap::new();
34 for (k, v) in wrapper.offset_table {
35 match k.serialize_json() {
36 Ok(result) => {
37 offset_table.insert(result, v.load(Ordering::Relaxed));
38 }
39 Err(err) => {
40 warn!("skip offset entry because message queue serialization failed: {err}");
41 }
42 }
43 }
44 OffsetSerialize { offset_table }
45 }
46}