///|
fn main {
try {
let now = @osc.TimeTag::from_unix(1700000000L)
let later = now.add_ticks(1UL << 32)
let packet = @osc.Bundle(later, [
@osc.Message({ address: "/screen/show", arguments: [Text("scene-1")], }),
@osc.Bundle(later, [
@osc.Message({ address: "/light/color", arguments: [Text("33ccff")], }),
]),
@osc.Message({ address: "/screen/commit", arguments: [], }),
])
let queue = @osc.Osc10Scheduler::new()
assert_eq(queue.enqueue(packet, now), [1UL, 2UL])
assert_eq(queue.poll(now).length(), 0)
assert_eq(
queue.poll(later, max_batches=1)[0].messages.map(m => m.address),
["/screen/show", "/screen/commit"],
)
assert_eq(queue.poll(later)[0].messages[0].address, "/light/color")
println("media: OSC 1.0 core; screen show/commit stay in one atomic batch")
} catch {
_ => abort("media workflow failed")
}
}