-module(i3_client_codec). -moduledoc false. -export([decode_msg/2, encode_msg/2, decode_event_type/1]). -include("i3_client_codec.hrl"). decode_msg(Type0, Payload) -> case Type0 bsr 31 of 0 -> {reply, Type0, Payload}; 1 -> {event, Type0 band ?event_mask, Payload} end. encode_msg(Type, Payload0) -> Payload1 = encode_payload(Payload0), Size = iolist_size(Payload1), [?magic, <>, Payload1]. encode_payload(Payload) when is_binary(Payload) -> Payload; encode_payload(Payload) -> json:encode(Payload). decode_event_type(0) -> <<"workspace">>; decode_event_type(1) -> <<"output">>; decode_event_type(2) -> <<"mode">>; decode_event_type(3) -> <<"window">>; decode_event_type(4) -> <<"barconfig_update">>; decode_event_type(5) -> <<"binding">>; decode_event_type(6) -> <<"shutdown">>; decode_event_type(7) -> <<"tick">>; decode_event_type(14) -> <<"bar_state_update">>; decode_event_type(21) -> <<"input">>.