MulticastImportImpl.Mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Last modified by Swinehart, December 3, 1985 9:55:29 am PST
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;
Data
ROPE: TYPE= RPC.ShortROPE;
importInstanceName: ROPENIL;
importInstanceValue: ROPENIL;
Import Procedure
MulticastImport: PUBLIC PROC [instance: ROPE] RETURNS [success: BOOLFALSE] = {
ENABLE RPC.ImportFailed => GOTO Failed;
importInstanceValue: ROPE;
IF instance=NIL THEN GOTO Failed; -- no defaulting.
importInstanceValueNamesGV.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];
};
User command
CmdMulticastImport: Commander.CommandProc = {
instance: ROPE = CommandTool.NextArgument[cmd];
IF instance=NIL THEN {
VoiceUtils.Report["Usage: MulticastImport <serverInstance>", $System]; RETURN; };
IF MulticastImport[instance] THEN
VoiceUtils.ReportFR["ImportInterface[Multicast.Lark, %s]", $System, NIL, rope[instance]];
};
Initialization
Commander.Register["MulticastImport", CmdMulticastImport,
"MulticastImport <serverInstance> to connect to multicast forwarding server"];
}.
Swinehart, May 14, 1985 12:59:49 pm PDT
Cedar 6.0