diff options
Diffstat (limited to 'l')
| -rw-r--r-- | l/extreload.asd | 1 | ||||
| -rw-r--r-- | l/src/call-id.lisp | 12 | ||||
| -rw-r--r-- | l/src/main.lisp | 9 | 
3 files changed, 20 insertions, 2 deletions
| diff --git a/l/extreload.asd b/l/extreload.asd index 551076e..7dffd1c 100644 --- a/l/extreload.asd +++ b/l/extreload.asd @@ -10,6 +10,7 @@                               (:file "macro")                               (:file "config")                               (:file "option") +                             (:file "call-id")                               (:file "devtools-protocol")                               (:file "main")))) diff --git a/l/src/call-id.lisp b/l/src/call-id.lisp new file mode 100644 index 0000000..bf0bcec --- /dev/null +++ b/l/src/call-id.lisp @@ -0,0 +1,12 @@ +(in-package :extreload) + +(defclass call-id () +  ((id +     :initform 0 +     :documentation "Current call ID."))) + +(defgeneric next-call-id (call-id) +  (:documentation "Increment the call ID and return the result.")) + +(defmethod next-call-id ((call-id call-id)) +  (incf (slot-value call-id 'id))) diff --git a/l/src/main.lisp b/l/src/main.lisp index 9a0ea79..fbe3357 100644 --- a/l/src/main.lisp +++ b/l/src/main.lisp @@ -1,6 +1,7 @@  (in-package :extreload)  (defvar *wg* (wait-group:make-wait-group)) +(defvar *devtools-root-call-id* (make-instance 'call-id))  (opts:define-opts    (:name :socket-url @@ -30,7 +31,8 @@        ; (wsd:on :message *client* #'(lambda (message) (ws-on-message message)))        ;; TODO: Maybe defvar *config* and store client in the config -      (websocket-send *client* (target-get-targets-msg 1)) +      (websocket-send *client* (target-get-targets-msg +                                 (next-call-id *devtools-root-call-id*)))        (wait-group:wait *wg*)))) @@ -73,9 +75,12 @@  (defun attach-to-target (extension)    (let ((target-id (json-obj-get extension "targetId")))      (websocket-send *client* -              (target-attach-to-target-msg 2 target-id)))) +              (target-attach-to-target-msg +                (next-call-id *devtools-root-call-id*) +                target-id))))  (defun reload-extension (session-id) +  ;; Use call ID "1" as this is the first message sent to the attached target.    (websocket-send *client*              (runtime-evaluate-msg 1 session-id "chrome.runtime.reload()"))) | 
