require util.4th require torcontrol-constants.4th require configuration.4th require stdout-hook.4th require check-gforth.4th require eventloop.4th require event-constants.4th require server.4th \ TODO: integrate generic timed event handling into the event loop? 0 variable! clcounter : handle-command-line? ( -- flag ) clcounter @ 10 >= dup IF 0 clcounter ! ELSE 1 clcounter +! THEN ; 0 variable! dostimer : handle-dos? ( -- flag ) 0 time dup dostimer @ > IF DOS_UPDATE_INTERVAL + dostimer ! true ELSE drop false THEN ; : custom-eventloop ( -- ) BEGIN handle-command-line? IF 0 EVENT_COMMANDLINE events.enqueue THEN handle-dos? IF dos-update THEN eventloop.has-events? IF eventloop.dispatch ELSE server-idle? IF 10 ms false server-idle! THEN 0 0 events.enqueue eventloop.dispatch THEN AGAIN ; : main ( -- ) logger.open ['] custom-eventloop catch close-server throw logger.close ; \ : main ( -- ) \ logger.open \ custom-eventloop close-server \ logger.close ; main