(defpackage :zmq-hub.main (:use :cl :serapeum) (:export :toplevel)) (in-package :zmq-hub.main) (defun toplevel (&optional (wait t)) (let* ((data-queue (lparallel.queue:make-queue)) (threads (mapcar (op (apply #'bt:make-thread _)) (list `(,(op (fwoar.hub.server:main data-queue)) :name "server-thread") `(,(op (fwoar.hub.client:main "/feed_archive")) :name "client-thread") `(,(op (fwoar.hub.client:queue-processor)) :name "client-queue-processor") `(,(op (fwoar.hub.server:web-main data-queue)) :name "server-web"))))) (ql:quickload :swank) (swank:create-server :port 5959 :dont-close t) (when wait (mapcar #'bt:join-thread threads))))