ludic/packages/ludic.telemetry/ports.ludic
Orkuncakilkaya 19fcf60599 wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
ludic migrate state packages <every example program> packages/ludic.lab/example/plate.ludic
  1804 vars into 126 states, 64 into lets; 23498 edits in 460 files

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 15:31:34 +03:00

51 lines
2.1 KiB
Text

# ports.ludic - the config, and what the ports answer when the game leaves them unbound
export function telemetry_config(telemetry_st: mut TelemetryState, c: TelemetryConfig) -> void { telemetry_st.telemetry__cfg = c }
function telemetry__conf(telemetry_st: mut TelemetryState) -> TelemetryConfig {
if telemetry_st.telemetry__cfg == null { telemetry_st.telemetry__cfg = new TelemetryConfig }
return telemetry_st.telemetry__cfg
}
function telemetry__yes() -> bool { return true }
function telemetry__wall_ms(telemetry_st: TelemetryState) -> int { return (Time.now() - telemetry_st.telemetry__t0) * 1000 }
function telemetry__wall_stamp() -> string { return DateTime.format(Time.now(), "YYYY-MM-DDTHH:mm:ssZ") }
function telemetry__can_send(telemetry_st: mut TelemetryState) -> bool {
let c = telemetry__conf(telemetry_st)
if len(c.host) == 0 or len(c.key) == 0 { return false }
return TelemetryWorld.can_send()
}
function telemetry__enabled() -> bool { return TelemetryWorld.enabled() }
function telemetry__now() -> int { return TelemetryWorld.now_ms() }
function telemetry__stamp() -> string { return TelemetryWorld.stamp() }
function telemetry__http_send(url: string, body: string) -> int {
let h = Http.open("POST", url)
if h < 0 { return h }
Http.set(h, "Content-Type", "application/json")
Http.body(h, body)
Http.send(h)
return h
}
function telemetry__http_poll(h: int) -> int {
let st = Http.poll(h)
if st < 0 { return -1 }
var ok = 0
if st > 0 and Http.ok(h) { ok = 1 }
Http.free(h)
return ok
}
function telemetry__http_drop(h: int) -> void { Http.free(h) }
function telemetry__send(telemetry_st: mut TelemetryState, body: string) -> int { return TelemetryTransport.send(telemetry__conf(telemetry_st).host + telemetry__conf(telemetry_st).path, body) }
function telemetry__poll(h: int) -> int { return TelemetryTransport.poll(h) }
# a request abandoned (the player said no)
function telemetry__drop_request(telemetry_st: mut TelemetryState) -> void {
if telemetry_st.telemetry__h < 0 { return }
TelemetryTransport.drop(telemetry_st.telemetry__h)
telemetry_st.telemetry__h = -1
}