(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])