MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / build_response

Function build_response

nodedb-cluster/src/bootstrap/handle_join.rs:118–155  ·  view source on GitHub ↗

Build a successful `JoinResponse` from the current topology and routing.

(
    topology: &ClusterTopology,
    routing: &RoutingTable,
    cluster_id: u64,
)

Source from the content-addressed store, hash-verified

116
117/// Build a successful `JoinResponse` from the current topology and routing.
118fn build_response(
119 topology: &ClusterTopology,
120 routing: &RoutingTable,
121 cluster_id: u64,
122) -> JoinResponse {
123 let nodes: Vec<JoinNodeInfo> = topology
124 .all_nodes()
125 .map(|n| JoinNodeInfo {
126 node_id: n.node_id,
127 addr: n.addr.clone(),
128 state: n.state.as_u8(),
129 raft_groups: n.raft_groups.clone(),
130 wire_version: n.wire_version,
131 spiffe_id: n.spiffe_id.clone(),
132 spki_pin: n.spki_pin.map(|arr| arr.to_vec()),
133 })
134 .collect();
135
136 let groups: Vec<JoinGroupInfo> = routing
137 .group_members()
138 .iter()
139 .map(|(&gid, info)| JoinGroupInfo {
140 group_id: gid,
141 leader: info.leader,
142 members: info.members.clone(),
143 learners: info.learners.clone(),
144 })
145 .collect();
146
147 JoinResponse {
148 success: true,
149 error: String::new(),
150 cluster_id,
151 nodes,
152 vshard_to_group: routing.vshard_to_group().to_vec(),
153 groups,
154 }
155}
156
157/// Build a rejection response with the given error message.
158fn reject(error: String) -> JoinResponse {

Callers 1

handle_join_requestFunction · 0.70

Calls 8

collectMethod · 0.80
all_nodesMethod · 0.80
group_membersMethod · 0.80
vshard_to_groupMethod · 0.80
cloneMethod · 0.45
as_u8Method · 0.45
to_vecMethod · 0.45
iterMethod · 0.45

Tested by

no test coverage detected