diff options
-rw-r--r-- | l/src/macro.lisp | 6 | ||||
-rw-r--r-- | l/src/main.lisp | 11 |
2 files changed, 10 insertions, 7 deletions
diff --git a/l/src/macro.lisp b/l/src/macro.lisp index 4d69294..283cf9f 100644 --- a/l/src/macro.lisp +++ b/l/src/macro.lisp @@ -2,3 +2,9 @@ (defmacro filter (predicate list-form) `(remove-if-not ,predicate ,list-form)) + +(defmacro with-websocket-connection ((client) &body body) + `(progn + (wsd:start-connection ,client) + (unwind-protect (progn ,@body) + (wsd:close-connection ,client)))) diff --git a/l/src/main.lisp b/l/src/main.lisp index d1336d7..969e44f 100644 --- a/l/src/main.lisp +++ b/l/src/main.lisp @@ -5,15 +5,12 @@ (defvar *wg* (wait-group:make-wait-group)) (defun main () - (wsd:start-connection *client*) + (with-websocket-connection (*client*) + (wsd:on :message *client* #'ws-on-message) - (wsd:on :message *client* #'ws-on-message) + (websocket-send *client* (target-get-targets-msg 1)) - (websocket-send *client* (target-get-targets-msg 1)) - - (wait-group:wait *wg*) - - (wsd:close-connection *client*)) + (wait-group:wait *wg*))) (defun target-get-targets-msg (call-id) (jsown:to-json |