% Kilroy application, copyright 1987, Eric Jul.
import NodeListElement, NodeList from "Builtins"
import OutStream from "Builtins"
const Kilroy == object Kilroy
const delayTime == Time.create[3,0]
process
var i: Integer <- 0
var count: Integer
var remoteNode: Node
var startTime: Time
var endTime: Time
var diff: Time
var myList: NodeList
var myNode: Node <- locate self
var localOutStream: OutStream
var nodeCount: Integer
stdout.PutString["Runner starting up on node "]
stdout.PutInt[myNode$lnn, 2]
stdout.PutString["\^J"]
myList <- myNode.getActiveNodes
nodeCount <- myList.upperbound +1
stdout.PutString["Found "]
stdout.PutInt[nodeCount, 2]
stdout.PutString[" nodes active.\^J"]
stdout.PutString["... waiting 3 seconds for screen IO to settle\^J"]
myNode.Delay[delayTime]
startTime <- myNode.getTimeOfDay
loop
exit when i >= nodeCount
remoteNode <- myList(i)$theNode
move Kilroy to remoteNode
localOutStream <- Node.getStdout
localOutStream.PutString["Kilroy was here\^J"]
localOutStream.Flush
localOutStream <- NIL
i <- i + 1
end loop
move Killroy to myNode
endTime <- myNode.getTimeOfDay
diff <- endTime - startTime
stdout.PutString["Back home - total time " || diff.asString || "\^J"]
stdout.PutString["DONE\^J"]
stdout.close
stdin.close
end process
end Kilroy