common_meta/key/flow/
flownode_addr_helper.rs1use std::collections::HashMap;
16
17use crate::error::Result;
18use crate::key::node_address::{NodeAddressKey, NodeAddressValue};
19use crate::key::{MetadataKey, MetadataValue};
20use crate::kv_backend::KvBackendRef;
21use crate::rpc::store::BatchGetRequest;
22
23pub(crate) async fn get_flownode_addresses(
26 kv_backend: &KvBackendRef,
27 keys: Vec<NodeAddressKey>,
28) -> Result<HashMap<u64, NodeAddressValue>> {
29 if keys.is_empty() {
30 return Ok(HashMap::default());
31 }
32
33 let req = BatchGetRequest {
34 keys: keys.into_iter().map(|k| k.to_bytes()).collect(),
35 };
36 kv_backend
37 .batch_get(req)
38 .await?
39 .kvs
40 .into_iter()
41 .map(|kv| {
42 let key = NodeAddressKey::from_bytes(&kv.key)?;
43 let value = NodeAddressValue::try_from_raw_value(&kv.value)?;
44 Ok((key.node_id, value))
45 })
46 .collect()
47}