aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--l/src/macro.lisp6
-rw-r--r--l/src/main.lisp11
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