 
 
 (defn create-local-processing-element
+  "Create a local processing element that is intended to be used in a local data processing pipeline.
+   Input data will be read from the input queue in-queue and processed with the given initial processing function initial-proc-fn.
+   Optionally, the name of the worker thread for the newly created processing element can be set to ProcessingElement_id for which id is replaced with the given id."
   ([^BlockingQueue in-queue initial-proc-fn]
     (create-local-processing-element in-queue initial-proc-fn nil))
   ([^BlockingQueue in-queue initial-proc-fn id]

       :thread-name thread-name})))

(defn interrupt
  [obj]
  ((obj :interrupt)))

(defn get-out-queue
  [obj]
  (obj :out-queue))

(defn get-id
  [obj]
  (obj :id))

(defn get-thread-name
  [obj]
  (obj :thread-name))

(defn get-counts
  [obj]
  ((obj :get-counts-fn)))

(defn set-proc-fn
  [obj proc-fn]
  ((obj :set-proc-fn) proc-fn))

(defn create-local-processing-pipeline
  [fns out-fn]
  (let [running (atom true)
        in-queue (create-queue)

                             new-proc-fns-vec)))}))

(defn get-in-fn
  "Get the input function of the given processing pipeline."
  [obj]
  (obj :in-fn))

(defn set-proc-fns-vec
  "Set the processing function vector of the given pipeline obj to fns."
  [obj fns]
  ((obj :set-proc-fns-vec) fns))

