CZG24QKIB45EL7PK4UA6XVG3VEVKI7OAQXN4YMFUKKI2MXLHRANQC [{header, Header}, {ttl, Ttl}, {hashes, Hashes}] = wire:decode_hash_response(Bin),?assert(proplists:get_value(msgLen, Header) =:= maps:get(<<"msgLen">>, TestObj)),?assert(proplists:get_value(msgType, Header) =:= maps:get(<<"msgType">>, TestObj)),ReqId = hex:hexstr_to_bin(binary_to_list(maps:get(<<"reqid">>, TestObj))),?assert(proplists:get_value(requestId, Header) =:= ReqId),?assert(Ttl =:= 1),
[{header, Header}, {ttl, 1}, {hashes, Hashes}] = wire:decode_hash_response(Bin),assert_header(Header, TestObj),
[{header, Header}, {ttl, Ttl}, {cancelid, CancelId}] = wire:decode_cancel_request(Bin),?assert(proplists:get_value(msgLen, Header) =:= maps:get(<<"msgLen">>, TestObj)),?assert(proplists:get_value(msgType, Header) =:= maps:get(<<"msgType">>, TestObj)),CancelId = hex:hexstr_to_bin(binary_to_list(maps:get(<<"cancelid">>, TestObj))),ReqId = hex:hexstr_to_bin(binary_to_list(maps:get(<<"reqid">>, TestObj))),?assert(proplists:get_value(requestId, Header) =:= ReqId),?assert(Ttl =:= 1).
[{header, Header}, {ttl, 1}, {cancelid, CancelId}] = wire:decode_cancel_request(Bin),assert_header(Header, TestObj),CancelId = hex:hexstr_to_bin(binary_to_list(maps:get(<<"cancelid">>, TestObj))).
assert_header(Header, TestObj),?assert(Channel =:= maps:get(<<"channel">>, TestObj)),?assert(TimeStart =:= maps:get(<<"timeStart">>, TestObj)),?assert(TimeEnd =:= maps:get(<<"timeEnd">>, TestObj)),?assert(Limit =:= maps:get(<<"limit">>, TestObj)).channel_state_request_test() ->[{binary, Bin}, {obj, TestObj}] = examples:channel_state_request(),Decoded = wire:decode_channel_state_request(Bin),[{header, Header}, {ttl, 1},{channel, Channel},{future, Future}] = Decoded,assert_header(Header, TestObj),?assert(Channel =:= maps:get(<<"channel">>, TestObj)),?assert(Future =:= maps:get(<<"future">>, TestObj)).channel_list_request_test() ->[{binary, Bin}, {obj, TestObj}] = examples:channel_list_request(),Decoded = wire:decode_channel_list_request(Bin),[{header, Header}, {ttl, 1},{offset, 0},{limit, 20}] = Decoded,assert_header(Header, TestObj).% Helpers%%%%%%%%%assert_header(Header, TestObj) ->
?assert(proplists:get_value(requestId, Header) =:= ReqId),?assert(Channel =:= maps:get(<<"channel">>, TestObj)),?assert(TimeStart =:= maps:get(<<"timeStart">>, TestObj)),?assert(TimeEnd =:= maps:get(<<"timeEnd">>, TestObj)),?assert(Limit =:= maps:get(<<"limit">>, TestObj)),?assert(Ttl =:= 1).
?assert(proplists:get_value(requestId, Header) =:= ReqId).
{Ttl, Rest} = decode_varint(Payload),{ChannelLen, Rest2} = decode_varint(Rest),<<Channel:ChannelLen/binary, Rest3/binary>> = Rest2,{TimeStart, Rest4} = decode_varint(Rest3),{TimeEnd, Rest5} = decode_varint(Rest4),{Limit, <<>>} = decode_varint(Rest5),
[Ttl, ChannelLen, Rest] = decode_varints(Payload, 2),<<Channel:ChannelLen/binary, Rest2/binary>> = Rest,[TimeStart, TimeEnd, Limit, <<>>] = decode_varints(Rest2, 3),
decode_channel_state_request(Data) ->Header = decode_response_header(Data),Payload = proplists:get_value(payload, Header),[Ttl, ChannelLen, Rest] = decode_varints(Payload, 2),<<Channel:ChannelLen/binary, Rest2/binary>> = Rest,{Future, <<>>} = decode_varint(Rest2),[ {header, proplists:delete(payload, Header)}, {ttl, Ttl}, {channel, Channel}, {future, Future}].decode_channel_list_request(Data) ->Header = decode_response_header(Data),Payload = proplists:get_value(payload, Header),[Ttl, Offset, Limit, <<>>] = decode_varints(Payload, 3),[ {header, proplists:delete(payload, Header)}, {ttl, Ttl}, {offset, Offset}, {limit, Limit}].% Helpersdecode_varints(Data, N) when N >= 0 ->decode_varints(Data, N, []).% privatedecode_varints(Data, 0, Acc) ->Acc ++ [Data];decode_varints(Data, N, Acc) when N >= 0 ->{Int, Rest} = decode_varint(Data),decode_varints(Rest, N-1, Acc ++ [Int]).
channel_state_request() ->D = <<"{\"name\":\"channel state request\",\"type\":\"request\",\"id\":5,\"binary\":\"13050000000095050429010764656661756c7400\",\"obj\":{\"msgLen\":19,\"msgType\":5,\"reqid\":\"95050429\",\"ttl\":1,\"channel\":\"default\",\"future\":0}}">>,decode_example_json(D).channel_list_request() ->D = <<"{\"name\":\"channel list request\",\"type\":\"request\",\"id\":6,\"binary\":\"0c060000000095050429010014\",\"obj\":{\"msgLen\":12,\"msgType\":6,\"reqid\":\"95050429\",\"ttl\":1,\"offset\":0,\"limit\":20}}">>,decode_example_json(D).