CATServer.Mod 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. MODULE CATServer; (** AUTHOR "TF"; PURPOSE "Cluster Administration Tool server"; *)
  2. IMPORT
  3. Modules, Streams, TCP, TCPServices, AosLog := TFLog, Performance;
  4. CONST CATPort = 9999;
  5. TYPE
  6. CATAgent = OBJECT (TCPServices.Agent)
  7. VAR in: Streams.Reader; out: Streams.Writer;
  8. token : ARRAY 16 OF CHAR;
  9. x : LONGINT;
  10. BEGIN {ACTIVE}
  11. (* open streams *)
  12. Streams.OpenReader(in, client.Receive);
  13. Streams.OpenWriter(out, client.Send);
  14. LOOP
  15. in.Token(token); in.SkipLn; IF in.res # 0 THEN EXIT END;
  16. IF token = "getOS" THEN out.String("Aos"); out.Ln; out.Update
  17. ELSIF token = "getLoad" THEN
  18. x := ENTIER(Performance.load[0] * 100 + 0.5);
  19. out.Int(x DIV 100, 3); out.Char(".");out.Int(x DIV 10 MOD 10, 1); out.Int(x MOD 10, 1);
  20. out.Ln; out.Update
  21. ELSE out.String("not implemented"); out.Ln; out.Update
  22. END;
  23. IF out.res # 0 THEN EXIT END
  24. END;
  25. Terminate
  26. END CATAgent;
  27. VAR cat : TCPServices.Service;
  28. log : AosLog.Log;
  29. PROCEDURE NewCATAgent(c: TCP.Connection; s: TCPServices.Service): TCPServices.Agent;
  30. VAR a: CATAgent;
  31. BEGIN
  32. NEW(a, c, s); RETURN a
  33. END NewCATAgent;
  34. PROCEDURE Start*;
  35. VAR res : WORD;
  36. BEGIN
  37. IF cat = NIL THEN
  38. NEW(cat, CATPort, NewCATAgent, res);
  39. log.Enter; log.TimeStamp; log.String("Started"); log.Exit
  40. END;
  41. END Start;
  42. PROCEDURE Stop*;
  43. BEGIN
  44. IF cat # NIL THEN
  45. cat.Stop; cat := NIL;
  46. log.Enter; log.TimeStamp; log.String("Stopped"); log.Exit
  47. END;
  48. END Stop;
  49. PROCEDURE Cleanup;
  50. BEGIN
  51. Stop;
  52. log.Close()
  53. END Cleanup;
  54. BEGIN
  55. NEW(log, "CAT Server"); log.SetLogToOut(TRUE);
  56. Modules.InstallTermHandler(Cleanup)
  57. END CATServer.
  58. Aos.Call CATServer.Start~
  59. System.Free CATServer ~