<> <> <> DIRECTORY Commander USING [ CommandProc, Register ], CommandTool USING [ NextArgument ], NamesGV USING [ GVGetAttribute ], MulticastImp, MulticastRpcControl USING [ ImportInterface ], IO, RPC USING [ ImportFailed, ShortROPE ], VoiceUtils USING [ Problem, Report, ReportFR ] ; MulticastImportImpl: CEDAR PROGRAM IMPORTS Commander, CommandTool, IO, VoiceUtils, RPC, NamesGV, MulticastRpcControl EXPORTS MulticastImp = { OPEN IO; <> ROPE: TYPE= RPC.ShortROPE; importInstanceName: ROPE_NIL; importInstanceValue: ROPE_NIL; <> MulticastImport: PUBLIC PROC [instance: ROPE] RETURNS [success: BOOL_FALSE] = { ENABLE RPC.ImportFailed => GOTO Failed; importInstanceValue: ROPE; IF instance=NIL THEN GOTO Failed; -- no defaulting. importInstanceValue _ NamesGV.GVGetAttribute[instance, $connect, NIL]; IF importInstanceValue=NIL THEN GOTO Failed; -- no binding found. success _ TRUE; MulticastRpcControl.ImportInterface [[ -- try with real name or explicit instance value type: "Multicast.Lark", instance: importInstanceValue ]!RPC.ImportFailed => { success _ FALSE; CONTINUE; }]; IF ~success THEN MulticastRpcControl.ImportInterface [[ -- try with real name or explicit instance value type: "Multicast.Lark", instance: instance ]]; success _ TRUE; EXITS Failed => VoiceUtils.Problem["Couldn't import Multicast.Lark", $System]; }; <> CmdMulticastImport: Commander.CommandProc = { instance: ROPE = CommandTool.NextArgument[cmd]; IF instance=NIL THEN { VoiceUtils.Report["Usage: MulticastImport ", $System]; RETURN; }; IF MulticastImport[instance] THEN VoiceUtils.ReportFR["ImportInterface[Multicast.Lark, %s]", $System, NIL, rope[instance]]; }; <> <<>> Commander.Register["MulticastImport", CmdMulticastImport, "MulticastImport to connect to multicast forwarding server"]; }. <<>> <> <> <<>>