fix: TUI reader-loop — silent timeout handling, sleep on idle
Some checks failed
Deploy (Gitea) / deploy (push) Failing after 2s
Some checks failed
Deploy (Gitea) / deploy (push) Failing after 2s
- recv-daemon: catch all errors silently (not just usocket:timeout-error which doesn't match SBCL's SB-INT:IO-TIMEOUT). Prevents log-message from bleeding through to the Croatoan screen. - reader-loop: add (sleep 0.5) when recv-daemon returns nil, preventing tight spin on repeated I/O timeouts during idle periods.
This commit is contained in:
@@ -187,12 +187,14 @@
|
|||||||
(setf (char buf i) ch)))
|
(setf (char buf i) ch)))
|
||||||
(let ((*read-eval* nil))
|
(let ((*read-eval* nil))
|
||||||
(read-from-string buf)))))
|
(read-from-string buf)))))
|
||||||
(error (c) (log-message "TUI-RECV: ~a" c) nil)))
|
(error () nil)))
|
||||||
|
|
||||||
(defun reader-loop (s)
|
(defun reader-loop (s)
|
||||||
(loop while (and (st :running) (open-stream-p s))
|
(loop while (and (st :running) (open-stream-p s))
|
||||||
do (let ((msg (recv-daemon s)))
|
do (let ((msg (recv-daemon s)))
|
||||||
(when msg (queue-event (list :type :daemon :payload msg))))))
|
(if msg
|
||||||
|
(queue-event (list :type :daemon :payload msg))
|
||||||
|
(sleep 0.5)))))
|
||||||
|
|
||||||
(defun connect-daemon (&optional (host "127.0.0.1") (port 9105))
|
(defun connect-daemon (&optional (host "127.0.0.1") (port 9105))
|
||||||
(handler-case
|
(handler-case
|
||||||
|
|||||||
@@ -218,12 +218,14 @@ Event handlers + daemon I/O + main loop.
|
|||||||
(setf (char buf i) ch)))
|
(setf (char buf i) ch)))
|
||||||
(let ((*read-eval* nil))
|
(let ((*read-eval* nil))
|
||||||
(read-from-string buf)))))
|
(read-from-string buf)))))
|
||||||
(error (c) (log-message "TUI-RECV: ~a" c) nil)))
|
(error () nil)))
|
||||||
|
|
||||||
(defun reader-loop (s)
|
(defun reader-loop (s)
|
||||||
(loop while (and (st :running) (open-stream-p s))
|
(loop while (and (st :running) (open-stream-p s))
|
||||||
do (let ((msg (recv-daemon s)))
|
do (let ((msg (recv-daemon s)))
|
||||||
(when msg (queue-event (list :type :daemon :payload msg))))))
|
(if msg
|
||||||
|
(queue-event (list :type :daemon :payload msg))
|
||||||
|
(sleep 0.5)))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Connection
|
** Connection
|
||||||
|
|||||||
Reference in New Issue
Block a user