define_api_id!(0xc59d_d1af_2a1f_5b37, "telemetry-v0");
use bytemuck::Pod;
use bytemuck::Zeroable;
pub type PlayerIdRepr = u64;
/// Key-value telemetry event string property
#[derive(Default, Debug, Copy, Clone, Pod, Zeroable)]
#[repr(C)]
pub struct EventProperty {
/// Key string pointer
pub key_ptr: u32,
/// Key string length
pub key_len: u32,
/// Value string pointer
pub value_ptr: u32,
/// Value string length
pub value_len: u32,
}
// NOTE: This uses the wrong module name "resource" here which should be "telemetry"
// but this is now baked in to the stable ABI name of the functions (doh!) so can't be changed here
//
// in future version of Telemetry API, do call the module "telemetry"!!
#[ark_api_macros::ark_bindgen(imports = "ark-telemetry-v0")]
mod resource {
use super::*;
extern "C" {
/// Send a telemetry event
///
/// Each event has a string name and user-defined set of key-value string properties
#[with_memory]
#[deprecated_infallible]
pub fn send_event(name: &str, properties: &[EventProperty]);
/// Send a telemetry event associated with a specific player
///
/// Each event has a string name and user-defined set of key-value string properties
#[with_memory]
pub fn send_event_for_player(
player_id: PlayerIdRepr,
event_name: &str,
event_properties: &[EventProperty],
);
}
}
pub use resource::*;