Skip to content

Commit d6fafe4

Browse files
committed
Separated functions into groups.
1 parent b0720c9 commit d6fafe4

File tree

1 file changed

+27
-15
lines changed

1 file changed

+27
-15
lines changed

src/state_examples/channels.clj

+27-15
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,38 @@
11
(ns state-examples.channels
22
(:require [clojure.core.async :as async]))
33

4-
(defn send-name [data client]
4+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5+
;;; Utility & Convenience Functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7+
8+
(defn- make-call
9+
([acc-ch cmd]
10+
(make-call acc-ch cmd nil))
11+
([acc-ch cmd amount]
12+
(let [client-ch (async/chan)]
13+
(async/>!! acc-ch {:client client-ch :cmd cmd :amount amount})
14+
(when-let [msg (async/<!! client-ch)]
15+
(:result msg)))))
16+
17+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
18+
;;; Private, Message-passing Functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
19+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
20+
21+
(defn- send-name [data client]
522
(async/>!! client {:result (:name data)})
623
data)
724

8-
(defn send-balance [data client]
25+
(defn- send-balance [data client]
926
(async/>!! client {:result (:balance data)})
1027
data)
1128

12-
(defn send-apply-interest [data client]
29+
(defn- send-apply-interest [data client]
1330
(let [balance (:balance data)
1431
interest-rate (:interest-rate data)]
1532
(async/>!! client {:result :ok})
1633
(assoc data :balance (+ balance (* balance interest-rate)))))
1734

18-
(defn send-withdrawl [data client amt]
35+
(defn- send-withdrawl [data client amt]
1936
(if (<= amt (:balance data))
2037
(do
2138
(async/>!! client {:result :ok})
@@ -24,11 +41,11 @@
2441
(async/>!! client {:result :insufficient-funds})
2542
data)))
2643

27-
(defn send-deposit [data client amt]
44+
(defn- send-deposit [data client amt]
2845
(async/>!! client {:result :ok})
2946
(assoc data :balance (+ (:balance data) amt)))
3047

31-
(defn dispatch-send
48+
(defn- dispatch-send
3249
([data client cmd]
3350
(dispatch-send data client cmd nil))
3451
([data client cmd amount]
@@ -39,6 +56,10 @@
3956
:withdraw (send-withdrawl data client amount)
4057
:deposit (send-deposit data client amount))))
4158

59+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
60+
;;; API ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
61+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
62+
4263
(defn new-account [name balance interest-rate]
4364
(let [ch (async/chan)
4465
data {:name name
@@ -51,15 +72,6 @@
5172
d (:client msg) (:cmd msg) (:amount msg))))))
5273
ch))
5374

54-
(defn make-call
55-
([acc-ch cmd]
56-
(make-call acc-ch cmd nil))
57-
([acc-ch cmd amount]
58-
(let [client-ch (async/chan)]
59-
(async/>!! acc-ch {:client client-ch :cmd cmd :amount amount})
60-
(when-let [msg (async/<!! client-ch)]
61-
(:result msg)))))
62-
6375
(defn get-name [acc-ch]
6476
(make-call acc-ch :name))
6577

0 commit comments

Comments
 (0)