Add transaction IDs to messages and handle on the server
This commit is contained in:
@@ -23,13 +23,16 @@ handle_cast(_Msg, State) ->
|
||||
|
||||
handle_info({ssl, Socket, Data}, State) ->
|
||||
case 'StudySystemProtocol':decode('Request', Data) of
|
||||
{ok, {ping, _}} ->
|
||||
{ok, {'Request', TransactionId, RequestBody}} ->
|
||||
ResponseBody = map_request(RequestBody),
|
||||
{ok, Encoded} = 'StudySystemProtocol':encode(
|
||||
'Response', {ack, 'NULL'}),
|
||||
'Response',
|
||||
{'Response', TransactionId, ResponseBody}),
|
||||
ok = ssl:send(Socket, Encoded);
|
||||
{error, {asn1, _Reason}} ->
|
||||
{ok, Encoded} = 'StudySystemProtocol':encode(
|
||||
'Response', {error, invalidRequest}),
|
||||
'Response',
|
||||
{'Response', -1, {error, invalidRequest}}),
|
||||
ok = ssl:send(Socket, Encoded)
|
||||
end,
|
||||
{noreply, State};
|
||||
@@ -45,3 +48,8 @@ terminate(_Reason, #{socket := Socket}) ->
|
||||
|
||||
code_change(_OldVsn, State, _Extra) ->
|
||||
{ok, State}.
|
||||
|
||||
map_request({ping, 'NULL'}) ->
|
||||
{ack, 'NULL'};
|
||||
map_request(_) ->
|
||||
{error, invalidRequest}.
|
||||
|
||||
Reference in New Issue
Block a user