enum PingPongMsg {
Ping
Pong
}
/// A simple behavior that responds to Ping with Pong.
pub fn ping_pong_behavior(_context : Context, _state : Int, msg : PingPongMsg) -> Int raise {
match msg {
Ping => {
println("Received Ping")
0
}
Pong => {
println("Received Pong")
0
}
}
}
async test "ping pong example" {
@async.with_task_group((group) => {
let system = ActorSystem::new("ping_pong", group)
let scheduler = Scheduler::new(system)
let actor = system.spawn(ping_pong_behavior, 0)
actor.send(Ping)
actor.send(Pong)
// Terminate the system after processing messages
group.spawn_bg(no_wait=true, () => {
@async.sleep(50)
system.terminate()
})
// Run the event loop via Scheduler
scheduler.run()
})
}