in crates/libs/core/src/types/client/node.rs [125:150]
fn from(value: &FABRIC_NODE_QUERY_RESULT_ITEM) -> Self {
let raw = value;
// TODO: get node id. integrate with another PR
let raw1 = unsafe {
(raw.Reserved as *const FABRIC_NODE_QUERY_RESULT_ITEM_EX1)
.as_ref()
.unwrap()
};
let raw2 = unsafe {
(raw1.Reserved as *const FABRIC_NODE_QUERY_RESULT_ITEM_EX2)
.as_ref()
.unwrap()
};
Node {
name: WStringWrap::from(raw.NodeName).into(),
ip_address_or_fqdn: WStringWrap::from(raw.IpAddressOrFQDN).into(),
node_type: WStringWrap::from(raw.NodeType).into(),
code_version: WStringWrap::from(raw.CodeVersion).into(),
config_version: WStringWrap::from(raw.ConfigVersion).into(),
node_up_time_in_seconds: raw.NodeUpTimeInSeconds,
is_seed_node: raw.IsSeedNode,
upgrade_domain: WStringWrap::from(raw.UpgradeDomain).into(),
fault_domain: WStringWrap::from(crate::PCWSTR(raw.FaultDomain.0)).into(),
node_instance_id: raw2.NodeInstanceId,
}
}