In this example we perform a query request and assume the socket connection is not authenticated yet. We then look at the error response.
As an example we will perform a useless query with as code just the simple equation 1 + 1;
and we will use the @thingsdb
scope to perform the query on.
This is the data we want to pack:
["@t", "1 + 1;"]
Serializing the above using MessagePack results in the following 11
bytes:
\x92\xa2@t\xa61 + 1;
Now we create the header. For this example we just use Id 0:
\x0b\x00\x00\x00
\x00\x00
\x22
\xdd
Sending the Query package
\x0b\x00\x00\x00\x00\x00\x22\xdd\x92\xa2@t\xa61 + 1;
If the connection is not authenticated, this will be the responding Data package
8\x00\x00\x00\x00\x00\x13\xec\x82\xaaerror_code\xd0\xc8\xa9error_msg\xbfconnection is not authenticated
The first 8 bytes (8\x00\x00\x00\x00\x00\x13\xec
) contain the header:
8\x00\x00\x00
= 56
\x00\x00
= 0
\x13
= 19 (ERROR)
\xec
= 236 (19^255)
We see that the ERROR
response package data of length 56
.
Unpacking the data \x82\xaaerror_code\xd0\xc8\xa9error_msg\xbfconnection is not authenticated
using MessagePack will return the following in JSON format:
{
"error_code": -56,
"error_msg": "connection is not authenticated"
}