DIRECTORY Rope USING[ ROPE ], RPC USING [EncryptionKey, MakeKey], Target USING[ Reason ], TargetRpcControl USING[ ExportInterface ], UserCredentials USING[ Get]; TargetImpl: CEDAR PROGRAM IMPORTS RPC, TargetRpcControl, UserCredentials EXPORTS Target = BEGIN user: Rope.ROPE; password: Rope.ROPE; key: RPC.EncryptionKey; Basic: PUBLIC PROC = { NULL }; Simple: PUBLIC PROC[first: INT, second: REF INT] RETURNS[a: Rope.ROPE, b: ATOM] = { RETURN["Hello", $anAtom] }; Exception: PUBLIC ERROR[why: Target.Reason] = CODE; Consultation: PUBLIC SIGNAL = CODE; [user, password] _ UserCredentials.Get[]; key _ RPC.MakeKey[password]; TargetRpcControl.ExportInterface[interfaceName: [instance: user], user: user, password: key]; END. œLupine: implementation of example interface TargetImpl.mesa Andrew Birrell September 14, 1983 9:06 am Bob Hagmann, November 9, 1984 10:55:05 am PST Ęr˜Jšœ+™+Jšœ™Jšœ*™*J™-J˜šĪk ˜ Jšœœœ˜Jšœœ˜#Jšœœ ˜Jšœœ˜*Jšœœ˜—J˜šœ  ˜Jšœ'˜.Jšœ ˜—J˜Jš˜J˜Jšœ œ˜Jšœœ˜Jšœ˜J˜šĪnœœœ˜Jšœœ˜ J˜—šžœœœœ œœœ œœ˜QJšœœ˜J˜—Jšœ œœœ˜3J˜Jšœœœœ˜#J˜Jšœ)˜)Jšœ˜J˜Jšœ]˜]J˜Jšœ˜J˜—…—Ūė