Added protocol encoder decoder library

This commit is contained in:
Tristan B. Kildaire 2020-06-23 12:21:19 +02:00
parent 04cc444d32
commit 83b863a9d8
2 changed files with 45 additions and 1 deletions

View File

@ -2,6 +2,6 @@
"fileVersion": 1,
"versions": {
"bformat": "1.0.8",
"tristanable": "0.0.10"
"tristanable": "0.0.11"
}
}

44
source/encoding.d Normal file
View File

@ -0,0 +1,44 @@
public final class DataMessage
{
public ulong tag;
public byte[] data;
public static DataMessage decode(byte[] bytes)
{
/* Fetch the `tag` */
ulong receivedTag = *(cast(ulong*)bytes.ptr);
/* Fetch the `data` */
byte[] receivedData = receivedMessage = bytes[8..bytes.length];
return new DataMessage(receivedTag, receivedData);
}
this(ulong tag, byte[] data)
{
this.tag = tag;
this.data = data;
}
public byte[] encode()
{
/* Construct the message array */
byte[] messageData;
/* Add the `tag` bytes */
messageData ~= *(cast(byte*)&tag);
messageData ~= *(cast(byte*)&tag+1);
messageData ~= *(cast(byte*)&tag+2);
messageData ~= *(cast(byte*)&tag+3);
messageData ~= *(cast(byte*)&tag+4);
messageData ~= *(cast(byte*)&tag+5);
messageData ~= *(cast(byte*)&tag+6);
messageData ~= *(cast(byte*)&tag+7);
/* Add the `data` bytes (the actual message) */
messageData ~= data;
return messageData;
}
}