Business logic callback for a single framing tier.
@type meta() :: map()
@type state() :: term()
@callback handle_connect(Xirsys.Sockets.Conn.t()) :: {:ok, state()}
@callback handle_disconnect(term(), state()) :: :ok
@callback handle_packet(binary(), meta(), Xirsys.Sockets.Conn.t(), state()) :: {:ok, state()} | {:reply, iodata(), state()} | {:descend, atom(), binary(), state()} | {:close, state()}