Moontalk server and client (provided by many parties)
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

57 行
1.1KB

  1. require util.4th
  2. require torcontrol-constants.4th
  3. require configuration.4th
  4. require stdout-hook.4th
  5. require check-gforth.4th
  6. require eventloop.4th
  7. require event-constants.4th
  8. require server.4th
  9. \ TODO: integrate generic timed event handling into the event loop?
  10. 0 variable! clcounter
  11. : handle-command-line? ( -- flag )
  12. clcounter @ 10 >= dup IF
  13. 0 clcounter !
  14. ELSE
  15. 1 clcounter +!
  16. THEN ;
  17. 0 variable! dostimer
  18. : handle-dos? ( -- flag )
  19. 0 time dup dostimer @ > IF
  20. DOS_UPDATE_INTERVAL + dostimer !
  21. true
  22. ELSE
  23. drop false
  24. THEN ;
  25. : custom-eventloop ( -- )
  26. BEGIN
  27. handle-command-line? IF
  28. 0 EVENT_COMMANDLINE events.enqueue
  29. THEN
  30. handle-dos? IF
  31. dos-update
  32. THEN
  33. eventloop.has-events? IF
  34. eventloop.dispatch
  35. ELSE
  36. server-idle? IF
  37. 10 ms false server-idle!
  38. THEN
  39. 0 0 events.enqueue eventloop.dispatch
  40. THEN
  41. AGAIN ;
  42. : main ( -- )
  43. logger.open
  44. ['] custom-eventloop catch close-server throw
  45. logger.close ;
  46. \ : main ( -- )
  47. \ logger.open
  48. \ custom-eventloop close-server
  49. \ logger.close ;
  50. main