<<>> <> <> <> <<>> DIRECTORY BasicTime USING [GMT, nullGMT], FilingAttributesP10V5, FilingP10V5, IO USING [STREAM], Rope USING [ROPE], XNS USING [Address], XNSAuth USING [Conversation], XNSCHName USING [Name]; XNSRemoteFileTypes: CEDAR DEFINITIONS ~ { <> GMT: TYPE = BasicTime.GMT; ROPE: TYPE = Rope.ROPE; STREAM: TYPE = IO.STREAM; Attribute: TYPE ~ FilingAttributesP10V5.Attribute; AttributeSequence: TYPE ~ FilingAttributesP10V5.AttributeSequence; AttributeSequenceObject: TYPE ~ FilingAttributesP10V5.AttributeSequenceObject; AttributeTypeSequence: TYPE ~ FilingP10V5.AttributeTypeSequence; AttributeTypeSequenceObject: TYPE ~ FilingP10V5.AttributeTypeSequenceObject; AttributeValue: TYPE ~ FilingAttributesP10V5.AttributeValue; AttributeValueObject: TYPE ~ FilingAttributesP10V5.AttributeValueObject; FileID: TYPE ~ FilingAttributesP10V5.FileID; Filter: TYPE ~ FilingP10V5.Filter; FilterObject: TYPE ~ FilingP10V5.FilterObject; InterpretedAttributeType: TYPE ~ FilingAttributesP10V5.InterpretedAttributeType; ScopeObject: TYPE ~ FilingP10V5.ScopeObject; ScopeSequence: TYPE ~ FilingP10V5.ScopeSequence; ScopeSequenceObject: TYPE ~ FilingP10V5.ScopeSequenceObject; Session: TYPE ~ FilingP10V5.Session; <> ServerData: TYPE ~ REF ServerDataObject; ServerDataObject: TYPE ~ RECORD [ downMsg: ROPE, -- non-NIL => server is down connectionTTL: CARD, -- connection time-to-live continuance: CARD, -- the time-to-live that the service gives us at each CrRPC call session: REF FilingP10V5.Session, -- the session handle for this login. active: BOOL ¬ FALSE, -- set to TRUE when a call is active. Keeps the session alive. conversation: XNSAuth.Conversation, -- so we can keep the credentials going conversationTTL: CARD, -- the conversation time-to-live qualified: XNSCHName.Name, -- the qualified name for the service serverName: ROPE, -- the readable name of the service address: REF XNS.Address, files: INT32 ¬ 0, -- opened, not yet closed root: FilingP10V5.Handle -- the file at the root of the service ]; <> nullGMT: BasicTime.GMT ~ BasicTime.nullGMT; createdOn: CARD32 ~ FilingAttributesP10V5.InterpretedAttributeType.createdOn.ORD; dataSize: CARD32 ~ FilingAttributesP10V5.InterpretedAttributeType.dataSize.ORD; fileID: CARD32 ~ FilingAttributesP10V5.InterpretedAttributeType.fileID.ORD; isDirectory: CARD32 ~ FilingAttributesP10V5.InterpretedAttributeType.isDirectory.ORD; name: CARD32 ~ FilingAttributesP10V5.InterpretedAttributeType.name.ORD; numberOfChildren: CARD32 ~ FilingAttributesP10V5.InterpretedAttributeType.numberOfChildren.ORD; pathname: CARD32 ~ FilingAttributesP10V5.InterpretedAttributeType.pathname.ORD; type: CARD32 ~ FilingAttributesP10V5.InterpretedAttributeType.type.ORD; version: CARD32 ~ FilingAttributesP10V5.InterpretedAttributeType.version.ORD; <> XNSOpenFile: TYPE ~ REF XNSOpenFileObject; XNSOpenFileObject: TYPE ~ RECORD [ fileH: FilingP10V5.Handle, ref: GMT ]; <> Op: TYPE ~ {delete, enumerate, enumerateNames, rename, retrieve, store}; }..