DIRECTORY CrRPC USING [Handle, PutArgsProc], CourierBindingProtocol USING [Address, Range]; CourierBinding: CEDAR DEFINITIONS ~ { Address: TYPE ~ CourierBindingProtocol.Address; Handle: TYPE ~ CrRPC.Handle; PutArgsProc: TYPE ~ CrRPC.PutArgsProc; Range: TYPE ~ CourierBindingProtocol.Range; Predicate: TYPE = PROC [h: Handle, program: CARD, range: Range, clientData: REF] RETURNS [respond: BOOLEAN]; Registration: TYPE ~ REF RegistrationObject; RegistrationObject: TYPE = RECORD [ clientData: REF, predicate: Predicate, program: CARD, range: Range ]; Bind: PUBLIC PROC [predicate: CARD, versions: Range, maxHops: CARDINAL, stubPutPred: PutArgsProc] RETURNS [answer: Address]; Register: PROC [program: CARD, range: Range, predicate: Predicate, clientData: REF] RETURNS [r: Registration]; Unregister: PROC [r: Registration]; }... .CourierBinding.mesa Copyright (C) 1985, 1986 by Xerox Corporation. All rights reserved. kam 12-Nov-85 17:33:10 Bill Jackson (bj) June 23, 1986 1:22:07 am PDT Client interaction A client calls Bind to find a network element that exports a program that is in the version range. If the service has registered a binding predicate, the client passes the parameters via user. Server interaction A service can register a predicate that is called whenever a request for binding is made. This predicate is called with the client-supplied parameters, allowing the service to decide if it should be bound to. If no predicate has been registered, or the client did not supply parameters, then it is treated as if the predicate returned TRUE. Copied Types Interesting Types Private Object !!! Procs Κΰ˜šœ™JšœC™CJšœ&™&Icode™.—J˜šΟk ˜ Jšœœ˜"Jšœœ˜.—J˜JšΟnœœ œ˜%J˜šœ™J™JšœD™DJšœE™EJšœ5™5J˜—šœ™J™JšœD™DJšœF™FJšœD™DJ˜JšœA™AJšœA™AJ˜—J˜šœ ™ J™Jšœ œ"˜/Jšœœ˜Jšœ œ˜&Jšœœ ˜+J˜—šœ™J™Jš œ œœœœœ œ˜lJ˜Jšœœœ˜,Jšœ™šœœœ˜#Jšœ œ˜Jšœ˜Jšœ œ˜Jšœ ˜ J˜—J˜—šœ™J™Jš žœœœ œœœ˜|J˜Jš žœœ œ2œœ˜nJ˜Jšž œœ˜#—J˜Jšœ˜—…—JX