Skip to main content

lib/pi/protocol/request.ex

defmodule Pi.Protocol.Request do
  @moduledoc "BEAM-to-Pi multiplexed request envelope."

  use JSONCodec, fast_path: :json

  defstruct [:type, :id, :op, payload: %{}]

  @type t :: %__MODULE__{
          type: atom(),
          id: String.t(),
          op: atom(),
          payload: map()
        }

  codec(:type, atom: :existing)
  codec(:op, atom: :existing)
end