defmodule QuackDB.Protocol do @moduledoc """ Quack protocol constants and codec entry point namespace. """ @field_end 0xFFFF @optional_index_invalid 0xFFFF_FFFF_FFFF_FFFF @message_types %{ invalid: 0, connection_request: 1, connection_response: 2, prepare_request: 3, prepare_response: 4, fetch_request: 7, fetch_response: 8, append_request: 9, success_response: 10, disconnect_message: 11, error_response: 100 } @spec field_end() :: 0xFFFF def field_end, do: @field_end @spec optional_index_invalid() :: 0xFFFF_FFFF_FFFF_FFFF def optional_index_invalid, do: @optional_index_invalid @spec message_type(atom()) :: non_neg_integer() def message_type(name), do: Map.fetch!(@message_types, name) @spec message_types() :: %{atom() => non_neg_integer()} def message_types, do: @message_types end