// retoor <retoor@molodetz.nl>
import "subprocess" for Popen
System.print("=== Concurrent Ping Demo - 5 Processes ===")
System.print("")
var p1 = Popen.new(["ping", "-c", "3", "127.0.0.1"])
var p2 = Popen.new(["ping", "-c", "3", "8.8.8.8"])
var p3 = Popen.new(["ping", "-c", "3", "1.1.1.1"])
var p4 = Popen.new(["ping", "-c", "3", "9.9.9.9"])
var p5 = Popen.new(["ping", "-c", "3", "208.67.222.222"])
System.print("Started 5 ping processes simultaneously:")
System.print(" PID %(p1.pid) -> 127.0.0.1 (localhost)")
System.print(" PID %(p2.pid) -> 8.8.8.8 (Google DNS)")
System.print(" PID %(p3.pid) -> 1.1.1.1 (Cloudflare)")
System.print(" PID %(p4.pid) -> 9.9.9.9 (Quad9)")
System.print(" PID %(p5.pid) -> 208.67.222.222 (OpenDNS)")
System.print("")
var done1 = false
var done2 = false
var done3 = false
var done4 = false
var done5 = false
while (!done1 || !done2 || !done3 || !done4 || !done5) {
if (!done1) {
var chunk = p1.stdout.read()
if (chunk == "") {
done1 = true
} else {
for (line in chunk.split("\n")) {
if (line.trim() != "") System.print("[LOCAL ] %(line)")
}
}
}
if (!done2) {
var chunk = p2.stdout.read()
if (chunk == "") {
done2 = true
} else {
for (line in chunk.split("\n")) {
if (line.trim() != "") System.print("[GOOGLE ] %(line)")
}
}
}
if (!done3) {
var chunk = p3.stdout.read()
if (chunk == "") {
done3 = true
} else {
for (line in chunk.split("\n")) {
if (line.trim() != "") System.print("[CLOUDFLR] %(line)")
}
}
}
if (!done4) {
var chunk = p4.stdout.read()
if (chunk == "") {
done4 = true
} else {
for (line in chunk.split("\n")) {
if (line.trim() != "") System.print("[QUAD9 ] %(line)")
}
}
}
if (!done5) {
var chunk = p5.stdout.read()
if (chunk == "") {
done5 = true
} else {
for (line in chunk.split("\n")) {
if (line.trim() != "") System.print("[OPENDNS ] %(line)")
}
}
}
}
System.print("")
System.print("All 5 ping processes completed concurrently!")