<> <> <> DIRECTORY Commander USING [ CommandProc, Register ], CommandTool USING [ NextArgument ], Convert USING [ IntFromRope ], LarkRemoteControl USING [ BootLark ], LarkRemoteControlRpcControl USING [ ImportInterface ], NamesGV USING [ GVGetAttribute ], Pup USING [ nullSocket ], Rope USING [ ROPE ], RPC USING [ ImportFailed ], VoiceUtils USING [ CmdOrToken, MakeRName, NetAddress, NetAddressFromRope ] ; LarkRemoteControlImpl: CEDAR PROGRAM IMPORTS Commander, CommandTool, Convert, LarkRemoteControl, LarkRemoteControlRpcControl, NamesGV, RPC, VoiceUtils = { BootLark: PROC[lark: Rope.ROPE, serverInstance: Rope.ROPE] RETURNS [outcome: BOOL_TRUE] ={ hostHint: VoiceUtils.NetAddress _ VoiceUtils.NetAddressFromRope[NamesGV.GVGetAttribute[serverInstance, $connect, NIL]]; IF serverInstance = NIL THEN RETURN[FALSE]; LarkRemoteControlRpcControl.ImportInterface[ interfaceName: [type: "LarkRemoteControl.Lark", instance: serverInstance], hostHint: hostHint! RPC.ImportFailed => GOTO ImportFailed]; RETURN[LarkRemoteControl.BootLark[[[173B], [Convert.IntFromRope[lark, 8]], Pup.nullSocket]]]; EXITS ImportFailed => NULL; }; BootLarkCmd: Commander.CommandProc = { machine: Rope.ROPE = CommandTool.NextArgument[cmd]; instance: Rope.ROPE = VoiceUtils.MakeRName[VoiceUtils.CmdOrToken[ cmd: cmd, key: "NamesGVInstance", default: "Strowger.Lark"], rName]; IF machine = NIL THEN RETURN; []_BootLark[machine, instance]; }; Commander.Register["BootLark", BootLarkCmd, "BootLark \nBootLark 110 hardware-boots lark number 110"]; }. <> <> <> <>