in crates/libs/core/src/runtime/stateful_bridge.rs [75:105]
fn CreateReplica(
&self,
servicetypename: &crate::PCWSTR,
servicename: FABRIC_URI,
initializationdatalength: u32,
initializationdata: *const u8,
partitionid: &crate::GUID,
replicaid: i64,
) -> crate::WinResult<IFabricStatefulServiceReplica> {
let p_servicename = crate::PCWSTR::from_raw(servicename.0);
let h_servicename = WStringWrap::from(p_servicename).into();
let h_servicetypename = WStringWrap::from(*servicetypename).into();
let data = unsafe {
if !initializationdata.is_null() {
std::slice::from_raw_parts(initializationdata, initializationdatalength as usize)
} else {
&[]
}
};
let replica = self.inner.create_replica(
&h_servicetypename,
&h_servicename,
data,
partitionid,
replicaid,
)?;
let rt = self.rt.clone();
let replica_bridge = IFabricStatefulServiceReplicaBridge::create(replica, rt);
Ok(replica_bridge.into())
}