diff --git a/stomp.el b/stomp.el index c9c6bfd..c866163 100644 --- a/stomp.el +++ b/stomp.el @@ -7,14 +7,13 @@ "Connect to a server supporting the STOMP protocol" (message "Not implemented yet")) -;; TODO: make this send more than just the sommand +;; TODO: make this send more than just the command (defun stomp-send-message (process message) "Send a message to a STOMP process" (process-send-string process (format "%s\n\n\u0000\n" (alist-get 'command message)))) -;; TODO: debug this and find a fast way to test it (defun stomp-filter-function (callback) "Filter function to be used with processes" (unless (functionp callback) (signal 'wrong-type-argument 'functionp)) @@ -36,7 +35,7 @@ (defun stomp-delete-message (buffer) "Delete the top-most messsage in a buffer" (with-current-buffer buffer - (delete-region (point-min) (+ 2x (stomp-find-message-end-point buffer))))) + (delete-region (point-min) (+ 2 (stomp-find-message-end-point buffer))))) (defun stomp-read-message (buffer) "Attempt to read a single message from a buffer. @@ -47,21 +46,16 @@ (goto-char (point-min)) (while (search-forward "\r" nil t) (replace-match "")) - (let ((message ()) (headers ()) (content) - (headers-end-point (stomp-find-headers-end-point buffer))) + (let ((message ()) + (headers-end-point (stomp-find-headers-end-point buffer)) + (message-end-point (stomp-find-message-end-point buffer))) (goto-char (point-min)) - (map-put message 'command (current-word)) - - (setq headers (stomp-read-headers buffer headers-end-point)) - - ;; TODO: take content-length header into account - (setq content (buffer-substring - (+ 1 headers-end-point) - (stomp-find-message-end-point buffer))) (cond - (content - (map-put message 'headers headers) - (map-put message 'content content)) + ((and message-end-point headers-end-point) + (map-put message 'command (current-word)) + (map-put message 'headers (stomp-read-headers buffer headers-end-point)) + ;; TODO: take content-length header into account + (map-put message 'content (buffer-substring (+ 1 headers-end-point) message-end-point))) (t nil))))) (defun stomp-read-headers (buffer end-point &optional headers) @@ -89,5 +83,6 @@ "Find the end of the header part of a STOMP frame." (with-current-buffer buffer (goto-char (point-min)) - (search-forward-regexp "^$") - (line-end-position))) + (condition-case nil + (progn (search-forward-regexp "^$") (line-end-position)) + (error nil))))