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".