<> <> <> DIRECTORY Commander USING [ CommandProc, Register ], CommandTool USING [ NumArgs, ArgN ], NamesGVImpExp, NamesGVRpcControl USING [ ImportInterface ], IO, Log USING [ Problem, Report ], Names USING [ ROPE ], RPC USING [ ImportFailed ], UserProfile USING [ Token ] ; NamesGVImportImpl: CEDAR PROGRAM IMPORTS Commander, CommandTool, IO, Log, RPC, NamesGVRpcControl, UserProfile EXPORTS NamesGVImpExp = { OPEN IO; <> ROPE: TYPE= Names.ROPE; imported: BOOL_FALSE; <> GVImport: PUBLIC PROC [instance: ROPE_NIL] RETURNS [success: BOOL_FALSE] = { ENABLE RPC.ImportFailed => { Log.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] = { IF instance=NIL THEN instance _ UserProfile.Token[key: "NamesGVInstance", default: "Strowger.Lark"]; UnGVImport[]; NamesGVRpcControl.ImportInterface [[ type: "NamesGV.Lark", instance: instance ]]; imported _ TRUE; newInstance _ instance; }; UnGVImport: PUBLIC PROC = { imported _ FALSE; }; <> CmdGVImport: Commander.CommandProc = { ENABLE RPC.ImportFailed => { Log.Problem["Couldn't import NamesGV.Lark", $System]; CONTINUE; }; instance: ROPE= DoImport[IF CommandTool.NumArgs[cmd]#0 THEN CommandTool.ArgN[cmd,1] ELSE NIL]; Log.Report[IO.PutFR["ImportInterface[NamesGV.Lark, %s]", rope[instance]], $System]; }; <> <<>> Commander.Register["GVImport", CmdGVImport, "Connect to remote NamesGV."]; }. <<>> <> <> <<>>