glixir/genserver

Type-safe GenServer interop for Gleam

This module provides a safe interface to Elixir GenServers from Gleam.

Types

Opaque type representing a GenServer process

pub opaque type GenServer

Errors that can occur in GenServer operations

pub type GenServerError {
  StartError(reason: String)
  CallTimeout
  CallError(reason: String)
  CastError(reason: String)
  NotFound(name: String)
}

Constructors

  • StartError(reason: String)
  • CallTimeout
  • CallError(reason: String)
  • CastError(reason: String)
  • NotFound(name: String)

Values

pub fn call(
  server: GenServer,
  request: a,
) -> Result(b, GenServerError)

Send a synchronous call to the GenServer (5s timeout)

pub fn call_named(
  name: String,
  request: a,
) -> Result(b, GenServerError)

Call a named GenServer

pub fn call_timeout(
  server: GenServer,
  request: a,
  timeout: Int,
) -> Result(b, GenServerError)

Send a synchronous call with custom timeout

pub fn cast(
  server: GenServer,
  request: a,
) -> Result(Nil, GenServerError)

Send an asynchronous cast to the GenServer

pub fn cast_named(
  name: String,
  request: a,
) -> Result(Nil, GenServerError)

Cast to a named GenServer

pub fn lookup_name(
  name: String,
) -> Result(GenServer, GenServerError)

Look up a GenServer by registered name

pub fn pid(server: GenServer) -> process.Pid

Get the PID of a GenServer

pub fn start_link(
  module: String,
  args: a,
) -> Result(GenServer, GenServerError)

Start a GenServer using Module.start_link/1

pub fn start_link_named(
  module: String,
  name: String,
  args: a,
) -> Result(GenServer, GenServerError)

Start a GenServer with a registered name

pub fn stop(server: GenServer) -> Result(Nil, GenServerError)

Stop a GenServer gracefully

Search Document