Skip to main content

lib/dust/protocol/message.ex

defmodule Dust.Protocol.Message do
  @doc "Build a hello message."
  def hello(capver, device_id, token) do
    %{type: "hello", capver: capver, device_id: device_id, token: token}
  end

  @doc "Build a hello response."
  def hello_response(capver_min, capver_max, your_capver, stores) do
    %{
      type: "hello_response",
      capver_min: capver_min,
      capver_max: capver_max,
      your_capver: your_capver,
      stores: stores
    }
  end

  @doc "Build a join message."
  def join(store, last_store_seq) do
    %{type: "join", store: store, last_store_seq: last_store_seq}
  end

  @doc "Build a write message."
  def write(store, op, path, value, device_id, client_op_id) do
    %{
      type: "write",
      store: store,
      op: to_string(op),
      path: path,
      value: value,
      device_id: device_id,
      client_op_id: client_op_id
    }
  end

  @doc "Build a canonical event."
  def event(store, store_seq, op, path, value, device_id, client_op_id) do
    %{
      type: "event",
      store: store,
      store_seq: store_seq,
      op: to_string(op),
      path: path,
      value: value,
      device_id: device_id,
      client_op_id: client_op_id
    }
  end

  @doc "Build an error message."
  def error(code, message) do
    %{type: "error", code: code, message: message}
  end
end