INTERFACEADetailer ; IMPORT CVProto, Logger, Reaper, StreamRd, StreamWr, SupFileRecSeq, SyncFixupQueue, Thread; TYPE T <: Public; Public = Thread.Closure OBJECT METHODS init(proto: CVProto.T; rd: StreamRd.T; wr: StreamWr.T; collections: SupFileRecSeq.T; fixups: SyncFixupQueue.T; compLevel: [-1..9] := -1; reaper: Reaper.T := NIL; stats: Stats := NIL; logger: Logger.T := NIL): T; END; Stats <: StatsPublic; StatsPublic = MUTEX OBJECT numRequests: CARDINAL := 0; bytesIn, bytesOut := 0.0d0; wireBytesIn, wireBytesOut := 0.0d0; METHODS init(): Stats; start(); update(); finish(); END;
Detailer.T
is the thread that examines files which may need updating,
and sends relevant details to the server.
The init
method takes many arguments, although most of them
have reasonable default values. The only mandatory arguments
are proto
, the protocol descriptor, rd
, the input stream
from the server's Tree Differ, wr
, the output stream to the
server's File Differ, and fixups
, the queue of fixup requests
from the Updater, for repairing failed edits of RCS files.
compLevel
specifies the compression level to use.
If a reaper
is specified, the detailer will notify it just before it
terminates.
If stats
is specified, the detailer will maintain various
statistics in the given object. It will call the start
method
initially, then the update
method after each update of the
statistics, and finally, the finish
method just before terminating.
Messages are sent to the logger
, if one is specified.
END Detailer.