<> <> <> <<>> <> DIRECTORY Commander USING [ CommandProc, Register ], CommandTool USING [ NextArgument ], NamesGVImpExp, NamesGVRpcControl USING [ ImportInterface ], IO, Rope USING [ ROPE ], RPC USING [ ImportFailed ], UserProfile USING [ Token ], VoiceUtils USING [ MakeRName, Problem, Report ] ; NamesGVImportImpl: CEDAR PROGRAM IMPORTS Commander, CommandTool, IO, NamesGVRpcControl, RPC, UserProfile, VoiceUtils EXPORTS NamesGVImpExp = { OPEN IO; <> ROPE: TYPE= Rope.ROPE; <> GVImport: PUBLIC PROC [instance: ROPE_NIL] RETURNS [success: BOOL_FALSE] = { ENABLE RPC.ImportFailed => { VoiceUtils.Problem["Couldn't import NamesGV.Lark", $Finch]; CONTINUE; }; <<$Finch until $System can be made much cleverer! Defaults to $System when there's no Finch.>> [] _ DoImport[instance]; success _ TRUE; }; DoImport: PROC [instance: ROPE_NIL] RETURNS [newInstance: ROPE_NIL] = { <> newInstance _ VoiceUtils.MakeRName[style: rName, name: IF instance#NIL THEN instance ELSE UserProfile.Token[key: "NamesGVInstance", default: "Strowger.Lark"]]; NamesGVRpcControl.ImportInterface [ interfaceName: [ type: "NamesGV.Lark", instance: newInstance ] ]; }; UnGVImport: PUBLIC PROC = { NULL; }; <> CmdGVImport: Commander.CommandProc = { ENABLE RPC.ImportFailed => { VoiceUtils.Problem["Couldn't import NamesGV.Lark", $System]; CONTINUE; }; instance: ROPE = DoImport[CommandTool.NextArgument[cmd]]; VoiceUtils.Report[IO.PutFR["ImportInterface[NamesGV.Lark, %s]", rope[instance]], $System]; }; <> <<>> Commander.Register["GVImport", CmdGVImport, "Connect to remote NamesGV."]; }. <<>> <> <> <> <> <> <<>>