Function: eca--handle-message
eca--handle-message is a natively compiled function defined in eca.el.
Signature
(eca--handle-message SESSION JSON-DATA)
Documentation
Handle raw message JSON-DATA for SESSION.
Source Code
;; Defined in /nix/store/jklqzw6pzz6j4jrbv8wy0iwgi7jlrbld-emacs-packages-deps/share/emacs/site-lisp/elpa/eca-20260928.1827/eca.el
(defun eca--handle-message (session json-data)
"Handle raw message JSON-DATA for SESSION."
(let ((id (plist-get json-data :id))
(result (plist-get json-data :result))
(backtrace nil)
(eca--path-session session))
(eca--with-backtrace backtrace
(condition-case err
(pcase (eca--get-message-type json-data)
('response (-let [(success-callback) (plist-get (eca--session-response-handlers session) id)]
(when success-callback
(cl-remf (eca--session-response-handlers session) id)
(funcall success-callback result))))
('response-error (-let [(_ error-callback) (plist-get (eca--session-response-handlers session) id)]
(when error-callback
(cl-remf (eca--session-response-handlers session) id)
(funcall error-callback (plist-get json-data :error)))))
('notification (eca--handle-server-notification session json-data))
;; Handler errors must not escape into the process filter:
;; answer the server with an error status instead of leaving
;; the request pending until it times out server-side.
('request (let ((response (condition-case req-err
(eca--handle-server-request session json-data)
(error
(eca--log-error session req-err "handle-server-request" backtrace)
(eca-warn "Error handling server request %s: %s"
(plist-get json-data :method)
(error-message-string req-err))
(list :status "error"
:message (error-message-string req-err))))))
(unless (eq response :async)
(eca-api-send-request-response session json-data response)))))
(error
(eca--log-error session err "handle-message" backtrace)
(signal (car err) (cdr err)))))))