Back

go-loop (clj)

(source)

variable

Examples

dvcrn/markright
(ns markright.ui
  (:require-macros [cljs.core.async.macros :refer [go go-loop]])
  (:require [om.next :as om :refer-macros [defui]]
            [om.dom :as dom :include-macros true]
            [goog.dom :as gdom]
            [markright.parser :as p]
            [electron.ipc :as ipc]
            [markright.components.codemirror :as cm]
            [markright.components.markdown :as md]
            [cljs.core.async :as async :refer [chan put! pub sub unsub <!]]))

                     ;; super mega hack
                     ;; FIXME: remove me
                     (go-loop []
                       (let [fx (<! p/root-channel)]
                         (fx this))
                       (recur))))
  (componentWillMount [this] (.setOptions js/marked #js {:gfm true}))
  (componentWillReceiveProps [this next-props])
  (render [this]
    (let [{:keys [app/text app/html app/force-overwrite app/filepath app/saved-text]} (om/props this)]
      (if (not (= 0 (.-length filepath)))
        (if (= text saved-text)
          (set! (.-title js/document) filepath)
          (set! (.-title js/document) (str "* " filepath))))
jpmonettas/clograms
(ns clograms.fxs
  (:require [re-frame.core :as re-frame]
            [clograms.events :as events]
            [cljs.core.async :as async]
            [taoensso.sente  :as sente :refer [cb-success?]])
  (:require-macros [cljs.core.async.macros :as asyncm :refer [go-loop]]))

(re-frame/reg-fx
 :start-websocket
 (fn [{:keys [port]}]
   (println "Starting websocket on port " port)
   ;; Read from websocket
   (let [{:keys [chsk ch-recv send-fn state]} (sente/make-channel-socket-client! "/chsk"
                                                                                 nil
                                                                                 {:type :auto
                                                                                  :host "localhost"
                                                                                  :port port})] ; e/o #{:auto :ajax :ws}
     (go-loop [{:keys [?data]} (async/<! ch-recv)]
       (js/console.log "[WebSocket event]" ?data)
       (let [[ev dat] ?data]
         (case ev
           :updates/datoms (re-frame/dispatch [::events/new-datoms dat])
           nil))
       (recur (async/<! ch-recv)))
     (js/console.info "Websocket connection ready"))))
tonsky/datascript-chat
(ns datascript-chat.core
  (:require
    [cljs.core.async.macros :refer [go-loop]]))

(defmacro go-loop-sub [pub key binding & body]
 `(let [ch# (cljs.core.async/chan)]
    (cljs.core.async/sub ~pub ~key ch#)
    (go-loop []
      (let [~binding (cljs.core.async/<! ch#)]
        ~@body)
      (recur))))
ertugrulcetin/herfi
(ns herfi.scene.macros
  (:require
    [cljs.core.async.macros :refer [go-loop]]
    [clojure.java.io :as io]
    [clojure.string :as str]))

(defmacro go-loop-sub [pub key binding & body]
  `(let [ch# (cljs.core.async/chan)]
     (herfi.common.communication/add-to-exit-ch ~key ch#)
     (cljs.core.async/sub ~pub ~key ch#)
     (go-loop []
       (let [~binding (cljs.core.async/<! ch#)]
         (when-not (= (first ~binding) :exit)
           (try
             ~@body
             (catch js/Error e
               (js/console.error "go-loop")
               (js/console.error e)))
           (recur))))))
onyx-platform/onyx-dashboard
(ns onyx-dashboard.components.main
  (:require [om.core :as om :include-macros true]
            [om-tools.dom :as dom :include-macros true]
            [om-tools.core :refer-macros [defcomponent]]
            [om-bootstrap.grid :as g]
            [om-bootstrap.random :as r]
            [onyx-dashboard.components.deployment :refer [select-deployment deployment-indicator 
                                                          deployment-time-travel deployment-peers deployment-log-dump]]
            [onyx-dashboard.components.jobs :refer [job-selector job-info job-management]]
            [onyx-dashboard.components.log :refer [log-entries-pager]]
            [onyx-dashboard.controllers.api :refer [api-controller]]
            [onyx-dashboard.state-query :as sq]
            [cljs.core.async :as async :refer [<! >! put! chan]])
  (:require-macros [cljs.core.async.macros :as asyncm :refer [go-loop]]))

(defcomponent main-component [{:keys [deployment metrics zk-up? enable-job-management] :as app} owner]
  (did-mount [_] 
             (let [api-ch (om/get-shared owner :api-ch)
                   chsk-send! (om/get-shared owner :chsk-send!)] 
               (go-loop []
                        (let [msg (<! api-ch)]
                          (om/transact! app (partial api-controller msg chsk-send!))
                          (recur)))))