Current section
Files
Jump to
Current section
Files
src/i3_client_codec.erl
-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, <<Size:32/native, Type:32/native>>, 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">>.