zeus/src/TracedAlg.m3


Copyright (C) 1994, Digital Equipment Corp.

MODULE TracedAlg;

IMPORT Algorithm, List, Stdio, Thread, VBT, Wr, Zeus, ZeusClass, ZeusPanel;

REVEAL
  T = Algorithm.T BRANDED OBJECT
  OVERRIDES
    install := Install;
    delete := Delete;
    snapshot := Snapshot;
    restore := Restore;
    config := Config;
    startrun := Startrun;
    endrun := Endrun;
    run := Run;
    data := Data;
  END;

PROCEDURE Install (<* UNUSED *> alg: T) =
  BEGIN Trace ("install") END Install;

PROCEDURE Delete (<* UNUSED *> alg: T) =
  BEGIN Trace ("delete") END Delete;

PROCEDURE Snapshot (<* UNUSED *> alg: T; <* UNUSED *> wr: Wr.T) =
  BEGIN Trace ("snapshot") END Snapshot;

PROCEDURE Restore (<* UNUSED *> alg: T; <* UNUSED *> l: List.T) =
  BEGIN Trace ("restore") END Restore;

PROCEDURE Config (
    <* UNUSED *> alg: T;
    <* UNUSED *> state: ZeusClass.StateChange;
    <* UNUSED *> o: ZeusClass.T) =
  BEGIN Trace ("config") END Config;

PROCEDURE Startrun (<* UNUSED *> alg: T) =
  BEGIN Trace ("startrun") END Startrun;

PROCEDURE Endrun (<* UNUSED *> alg: T) =
  BEGIN Trace ("endrun") END Endrun;

PROCEDURE Run (<* UNUSED *> alg: T) RAISES {Thread.Alerted} =
  BEGIN Trace ("run") END Run;

PROCEDURE Data (<* UNUSED *> alg: T): VBT.T =
  BEGIN Trace ("data"); RETURN NIL END Data;

PROCEDURE Trace (t: TEXT) =
  <* FATAL Wr.Failure, Thread.Alerted *>
  BEGIN
    LOCK Zeus.stdoutMu DO
      Wr.PutText (Stdio.stdout, "alg: " & t & "\n");
      Wr.Flush (Stdio.stdout);
    END
  END Trace;

PROCEDURE New (): Algorithm.T =
  BEGIN RETURN NEW(T) END New;

BEGIN
  ZeusPanel.RegisterAlg (New, "Traced Alg")
END TracedAlg.