 (defprotocol IVertex
   (connect-to! [_ v sig-fn edge-opts])
   (disconnect-vertex! [_ v])
+  (disconnect-all! [_])
   (close-input! [_])
   (input-channel [_])
+  (connected-vertices [_])
   (collect! [_])
   (score-collect [_])
   (signal! [_])

%s}")
       (spit path)))

#_(def g (compute-graph))
#_(def ctx
  (async-context
   {:graph     g
    :bus-size  64
    :processor eager-vertex-processor}))

(defn signal-sssp
  [vertex dist] (if-let [v @vertex] (+ dist v)))


  (add-vertex! [_ vstate])
  (remove-vertex! [_ v])
  (vertex-for-id [_ id])
  (vertices [_])
  (add-edge! [_ src dest f opts]))

(defprotocol IGraphExecutor
  (execute! [_])
