gamnit :: RemoteServer :: handshake
Validates compatibility between handshake_app_name
and handshake_app_version
.
On error, close socket
.
# Attempt handshake with server
#
# Validates compatibility between `handshake_app_name` and `handshake_app_version`.
#
# On error, close `socket`.
fun handshake: Bool
do
# The client goes first so that the server doesn't show its hand
var socket = socket
assert socket != null
# App name
var app_name = sys.handshake_app_name
socket.serialize_msgpack app_name
var server_app = socket.deserialize_msgpack("String")
if server_app != app_name then
print_error "Handshake Error: server app name is '{server_app or else "<invalid>"}'"
socket.close
return false
end
# App version
socket.serialize_msgpack sys.handshake_app_version
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 or else "<invalid>"}'"
socket.close
return false
end
return true
end
lib/gamnit/network/client.nit:98,2--131,4