feat: add SSE process filter for stream parsing

This commit is contained in:
2026-06-11 12:44:16 -04:00
parent b090819483
commit a4dbcf8287
2 changed files with 42 additions and 0 deletions
+21
View File
@@ -50,5 +50,26 @@ Returns nil for empty or invalid events."
(json-parse-string json-str)
(error nil)))))))
(defvar noise-sse--buffer ""
"Buffer for partial SSE event data.")
(defun noise-sse--filter (proc string)
"Process filter for SSE connection.
Buffers incoming STRING and processes complete events."
(setq noise-sse--buffer (concat noise-sse--buffer string))
(while (string-match "\n\n" noise-sse--buffer)
(let ((event-end (match-beginning 0))
(event-start 0))
(let ((event-str (substring noise-sse--buffer event-start event-end)))
(setq noise-sse--buffer
(substring noise-sse--buffer (+ event-end 2)))
(when-let ((event (noise-sse--parse-event event-str)))
(noise-sse--handle-event event))))))
(defun noise-sse--handle-event (event)
"Handle a parsed SSE EVENT.
This function will be overridden in noise-receive to process envelopes."
(message "SSE event received: %s" event))
(provide 'noise-sse)
;;; noise-sse.el ends here