summaryrefslogtreecommitdiff
path: root/ipc.cpp
diff options
context:
space:
mode:
authorJuan Manuel Tomás <jtomas1815@gmail.com>2020-07-11 21:37:42 -0300
committerGitHub <noreply@github.com>2020-07-11 21:37:42 -0300
commit13fdfe875efdfb33d392c5e634ceff494962e7dc (patch)
tree48e6d89b63f9af3a14d2ef4564f1c7cdceef77d5 /ipc.cpp
parent880047d09eb4b9a448a5817699422abc6f07b5d6 (diff)
parent291748a56824f77b137c66e9879ec0a4ecb14ced (diff)
downloadjet-13fdfe875efdfb33d392c5e634ceff494962e7dc.tar.gz
jet-13fdfe875efdfb33d392c5e634ceff494962e7dc.zip
Merge pull request #10 from jmtomas/4
Diffstat (limited to 'ipc.cpp')
-rw-r--r--ipc.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/ipc.cpp b/ipc.cpp
new file mode 100644
index 0000000..9c96d5a
--- /dev/null
+++ b/ipc.cpp
@@ -0,0 +1,37 @@
+enum Operation {
+ OP_NULL = 0,
+ OP_MOVE1,
+ OP_MOVE2,
+ OP_MOVE4,
+ OP_MOVE8,
+ OP_INSERT,
+ OP_DELETE,
+ OP_SHOW
+};
+
+void encode2(int16_t data, uint8_t *message, size_t offset) {
+ message[offset] = data & 0x00ff;
+ message[offset + 1] = (data & 0xff00) >> 8;
+}
+
+int16_t decode2(uint8_t *message, size_t offset) {
+ return message[offset] | ((int16_t)message[offset + 1] << 8);
+}
+
+void encode4(int32_t data, uint8_t *message, size_t offset) {
+ encode2( data & 0x0000ffff, message, offset);
+ encode2((data & 0xffff0000) >> 16, message, offset + 2);
+}
+
+int32_t decode4(uint8_t *message, size_t offset) {
+ return decode2(message, offset) | ((int32_t)decode2(message, offset + 2) << 16);
+}
+
+void encode8(int64_t data, uint8_t *message, size_t offset) {
+ encode4( data & 0x00000000ffffffff, message, offset);
+ encode4((data & 0xffffffff00000000) >> 32, message, offset + 4);
+}
+
+int64_t decode8(uint8_t *message, size_t offset) {
+ return decode4(message, offset) | ((int64_t)decode4(message, offset + 4) << 32);
+}