80 lines
2.1 KiB
Clojure
80 lines
2.1 KiB
Clojure
(ns gen_server
|
|
"Erlang :gen_server module — generic server (low-level OTP API).
|
|
|
|
In CljElixir: prefer Elixir's GenServer module for most use cases.
|
|
Use this for direct Erlang OTP interop.")
|
|
|
|
(defn start
|
|
"Starts a gen_server. Returns {:ok pid} or {:error reason}.
|
|
(gen_server/start module init-arg opts)"
|
|
([module init-arg opts])
|
|
([server-name module init-arg opts]))
|
|
|
|
(defn start-link
|
|
"Starts a linked gen_server."
|
|
([module init-arg opts])
|
|
([server-name module init-arg opts]))
|
|
|
|
(defn call
|
|
"Makes a synchronous call.
|
|
(gen_server/call pid request) ;=> reply
|
|
(gen_server/call pid request 5000)"
|
|
([server-ref request])
|
|
([server-ref request timeout]))
|
|
|
|
(defn cast
|
|
"Sends an async message.
|
|
(gen_server/cast pid message) ;=> :ok"
|
|
[server-ref request])
|
|
|
|
(defn reply
|
|
"Replies to a caller from within handle_call.
|
|
(gen_server/reply from reply-value)"
|
|
[client reply])
|
|
|
|
(defn stop
|
|
"Stops the server.
|
|
(gen_server/stop pid)"
|
|
([server-ref])
|
|
([server-ref reason])
|
|
([server-ref reason timeout]))
|
|
|
|
(defn multi-call
|
|
"Calls all registered servers on all/specified nodes."
|
|
([name request])
|
|
([nodes name request])
|
|
([nodes name request timeout]))
|
|
|
|
(defn abcast
|
|
"Casts to all registered servers on all/specified nodes."
|
|
([name request])
|
|
([nodes name request]))
|
|
|
|
(defn enter-loop
|
|
"Makes calling process enter the gen_server receive loop."
|
|
([module opts state])
|
|
([module opts state server-name])
|
|
([module opts state server-name timeout]))
|
|
|
|
(defn wait-response
|
|
"Waits for a gen_server response."
|
|
([request-id timeout])
|
|
([request-id]))
|
|
|
|
(defn send-request
|
|
"Sends an async request. Returns request-id.
|
|
(gen_server/send-request pid request)"
|
|
([server-ref request])
|
|
([server-ref request label req-id-collection]))
|
|
|
|
(defn receive-response
|
|
"Receives a response from send-request.
|
|
(gen_server/receive-response request-id timeout)"
|
|
([request-id timeout])
|
|
([request-id]))
|
|
|
|
(defn check-response
|
|
"Checks if a response has arrived (non-blocking).
|
|
(gen_server/check-response msg request-id-or-collection)"
|
|
[msg request-id-or-collection])
|