<<>> <> <> <> <> <> DIRECTORY BasicTime USING [GMT], IO USING [STREAM], Rope USING [ROPE]; CinderSysOps: CEDAR DEFINITIONS = BEGIN Interceptor: TYPE = REF InterceptorRecord; InterceptorRecord: TYPE = RECORD [ open: OpenProc, close: CloseProc, delete: DeleteProc, data: REF ¬ NIL ]; OpenProc: TYPE = PROC [interceptor: Interceptor, name: Rope.ROPE, kind: OpenKind] RETURNS [stream: IO.STREAM, err: Rope.ROPE, time: BasicTime.GMT]; OpenKind: TYPE = {read, write, writeLog}; <> CloseProc: TYPE = PROC [interceptor: Interceptor, stream: IO.STREAM, abortAndDelete: BOOL] RETURNS [err: Rope.ROPE]; <> DeleteProc: TYPE = PROC [interceptor: Interceptor, name: Rope.ROPE] RETURNS [err: Rope.ROPE]; <> Intercept: PROC [interceptor: Interceptor] RETURNS [old: Interceptor]; <> <<>> Open: PROC [name: Rope.ROPE, kind: OpenKind] RETURNS [stream: IO.STREAM, err: Rope.ROPE, time: BasicTime.GMT]; <> Close: PROC [stream: IO.STREAM, abortAndDelete: BOOL ¬ FALSE] RETURNS [err: Rope.ROPE]; <> Delete: PROC [name: Rope.ROPE] RETURNS [err: Rope.ROPE]; <> Cleanup: PROC [abortAndDelete: BOOL]; <> END.