///|
fn run_alarm_listen(args : Array[String]) -> Unit {
guard args.length() >= 2 && args[0] == "--iface" else {
println("alarm-listen --iface [timeout-ms] [source-mac] [--ack]")
println(
" Example: alarm-listen --iface \"I226-V #2\" 30000 74:90:50:10:E9:07 --ack",
)
return
}
let timeout_ms = match parse_timeout_arg(args, 2, 30000) {
Some(value) => value
None => return
}
let ack_enabled = args.contains("--ack")
let expected_source = if args.length() >= 4 && args[3] != "--ack" {
Some(
@frame.MacAddress::from_hex(args[3][:]) catch {
err => {
println("Invalid source MAC: \{to_repr(err)}")
return
}
},
)
} else {
None
}
let fields : Array[String] = [
"interface=" + args[1],
"timeout_ms=" + timeout_ms.to_string(),
"ack_enabled=" + ack_enabled.to_string(),
]
match expected_source {
Some(mac) => fields.push("source_mac=" + mac.to_hex())
None => ()
}
println(
provider_harness_helper_handoff_text(
"alarm-listen", "alarm path helper", "@rawnet.RawSocket::open", fields,
),
)
}