This module defines the PPNet.Message protocol, which provides functions to pack and parse messages.
PPNet.Message
@callback datetime(message :: struct()) :: DateTime.t()
@callback pack(message :: struct()) :: binary()
@callback parse(data :: binary()) :: {:ok, struct()} | {:error, %PPNet.ParseError{data: term(), message: term(), reason: term()}}
@callback type_code() :: non_neg_integer()