EventsMemoryLog.Mod 1017 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. MODULE EventsMemoryLog; (** AUTHOR "staubesv"; PURPOSE "Log system events in memory"; *)
  2. (**
  3. * History:
  4. *
  5. * 14.03.2007 First release (staubesv)
  6. *)
  7. IMPORT
  8. Modules, Events, EventsUtils;
  9. CONST
  10. (* Logsize = MaxNofWrapper * EventsPerWrapper events *)
  11. MaxNofWrapper = 16;
  12. EventsPerWrapper = 256;
  13. TYPE
  14. EventLogger = OBJECT(Events.Sink)
  15. VAR
  16. events : EventsUtils.EventContainer;
  17. PROCEDURE Handle*(event : Events.Event);
  18. BEGIN
  19. IF ~events.IsFull() THEN
  20. events.Handle(event);
  21. END;
  22. END Handle;
  23. PROCEDURE &Init*;
  24. BEGIN
  25. name := "EventLog";
  26. NEW(events, MaxNofWrapper, EventsPerWrapper);
  27. END Init;
  28. END EventLogger;
  29. VAR
  30. eventLog- : EventLogger;
  31. PROCEDURE GetEvents*() : EventsUtils.EventContainer;
  32. BEGIN
  33. RETURN eventLog.events;
  34. END GetEvents;
  35. PROCEDURE Clear*;
  36. BEGIN
  37. eventLog.events.Clear;
  38. END Clear;
  39. PROCEDURE Cleanup;
  40. BEGIN
  41. Events.Unregister(eventLog);
  42. END Cleanup;
  43. BEGIN
  44. Modules.InstallTermHandler(Cleanup);
  45. NEW(eventLog);
  46. Events.Register(eventLog);
  47. END EventsMemoryLog.