git.fiddlerwoaroof.com
Raw Blame History
(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))))