gamnit: use the msgpack engines instead of binary
authorAlexis Laferrière <alexis.laf@xymus.net>
Sun, 3 Sep 2017 23:03:18 +0000 (19:03 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Mon, 18 Sep 2017 19:28:29 +0000 (15:28 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

lib/gamnit/network/client.nit
lib/gamnit/network/common.nit
lib/gamnit/network/server.nit

index 95afff8..dc4fc7b 100644 (file)
@@ -62,13 +62,17 @@ class RemoteServer
        var socket: nullable TCPStream = null
 
        # Is this connection connected?
-       fun connected: Bool do return socket != null and socket.connected
+       fun connected: Bool
+       do
+               var socket = socket
+               return socket != null and socket.connected
+       end
 
-       # `BinarySerializer` used to send data to this client through `socket`
-       var writer: BinarySerializer is noinit
+       # `MsgPackSerializer` used to send data to this client through `socket`
+       var writer: MsgPackSerializer is noinit
 
-       # `BinaryDeserializer` used to receive data from this client through `socket`
-       var reader: BinaryDeserializer is noinit
+       # `MsgPackDeserializer` used to receive data from this client through `socket`
+       var reader: MsgPackDeserializer is noinit
 
        # Attempt connection with the remote server
        fun connect: Bool
@@ -83,9 +87,9 @@ class RemoteServer
                end
 
                # Setup serialization
-               writer = new BinarySerializer(socket)
+               writer = new MsgPackSerializer(socket)
                writer.cache = new AsyncCache(false)
-               reader = new BinaryDeserializer(socket)
+               reader = new MsgPackDeserializer(socket)
                writer.link reader
 
                return true
@@ -104,21 +108,21 @@ class RemoteServer
 
                # App name
                var app_name = sys.handshake_app_name
-               socket.write_string app_name
+               socket.serialize_msgpack app_name
 
-               var server_app = socket.read_string
+               var server_app = socket.deserialize_msgpack("String")
                if server_app != app_name then
-                       print_error "Handshake Error: server app name is '{server_app}'"
+                       print_error "Handshake Error: server app name is '{server_app or else "<invalid>"}'"
                        socket.close
                        return false
                end
 
                # App version
-               socket.write_string sys.handshake_app_version
+               socket.serialize_msgpack sys.handshake_app_version
 
-               var server_version = socket.read_string
+               var server_version = socket.deserialize_msgpack("String")
                if server_version != sys.handshake_app_version then
-                       print_error "Handshake Error: server version is different '{server_version}'"
+                       print_error "Handshake Error: server version is different '{server_version or else "<invalid>"}'"
                        socket.close
                        return false
                end
index 579145b..339aa9b 100644 (file)
@@ -16,7 +16,7 @@
 module common
 
 import socket
-import binary::serialization
+import msgpack
 
 # Unique name of the application to use in the handshake
 #
index 70cf002..0a78d43 100644 (file)
@@ -160,18 +160,18 @@ class RemoteClient
        # Is this client connected?
        fun connected: Bool do return socket.connected
 
-       # `BinarySerializer` used to send data to this client through `socket`
-       var writer: BinarySerializer is noinit
+       # `MsgPackSerializer` used to send data to this client through `socket`
+       var writer: MsgPackSerializer is noinit
 
-       # `BinaryDeserializer` used to receive data from this client through `socket`
-       var reader: BinaryDeserializer is noinit
+       # `MsgPackDeserializer` used to receive data from this client through `socket`
+       var reader: MsgPackDeserializer is noinit
 
        init
        do
                # Setup serialization
-               writer = new BinarySerializer(socket)
+               writer = new MsgPackSerializer(socket)
                writer.cache = new AsyncCache(true)
-               reader = new BinaryDeserializer(socket)
+               reader = new MsgPackDeserializer(socket)
                writer.link reader
        end
 
@@ -182,29 +182,29 @@ class RemoteClient
 
                # Make sure it is the same app
                var server_app = sys.handshake_app_name
-               var client_app = socket.read_string
+               var client_app = socket.deserialize_msgpack
                if server_app != client_app then
-                       print_error "Server Error: Client app name is '{client_app}'"
+                       print_error "Server Error: Client app name is '{client_app or else "<invalid>"}'"
 
                        # Send an empty string so the client read it and give up
-                       socket.write_string ""
+                       socket.serialize_msgpack ""
                        socket.close
                        return false
                end
 
-               socket.write_string server_app
+               socket.serialize_msgpack server_app
 
                # App version
                var app_version = sys.handshake_app_version
-               var client_version = socket.read_string
+               var client_version = socket.deserialize_msgpack
                if client_version != app_version then
-                       print_error "Handshake Error: client version is different '{client_version}'"
-                       socket.write_string ""
+                       print_error "Handshake Error: client version is different '{client_version or else "<invalid>"}'"
+                       socket.serialize_msgpack ""
                        socket.close
                        return false
                end
 
-               socket.write_string app_version
+               socket.serialize_msgpack app_version
 
                return true
        end