From 76e4234164b203dacf4b8f58554d8c41be4a5288 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Tue, 30 May 2017 11:19:04 -0400 Subject: [PATCH] gamnit: add server discovery or create example MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- lib/gamnit/network/network.nit | 51 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/lib/gamnit/network/network.nit b/lib/gamnit/network/network.nit index 83fd35d..93e1407 100644 --- a/lib/gamnit/network/network.nit +++ b/lib/gamnit/network/network.nit @@ -13,6 +13,57 @@ # limitations under the License. # Easy client/server logic for games and simple distributed applications +# +# Both `gamnit::client` and `gamnit::server` can be used separately or +# together by importing `gamnit::network`. +# Use both modules to create an program that discover local servers +# or create one if none is found: +# +# ~~~ +# redef fun handshake_app_name do return "network_test" +# +# # Discover local servers +# var servers = discover_local_servers +# if servers.not_empty then +# # Try to connect to the first local server +# var server_info = servers.first +# var server = new RemoteServer(server_info) +# +# if not server.connect then +# print_error "Failed to connect to {server_info.address}:{server_info.port}" +# else if not server.handshake then +# print_error "Failed handshake with {server_info.address}:{server_info.port}" +# else +# # Connected! +# print "Connected to {server_info.address}:{server_info.port}" +# +# # Write something and close connection +# server.writer.serialize "hello server" +# server.socket.as(not null).close +# end +# else +# # Create a local server +# var connect_port = 33729 +# print "Launching server: connect on {connect_port}, discovery on {discovery_port}" +# var server = new Server(connect_port) +# +# # Don't loop if testing +# if "NIT_TESTING".environ == "true" then exit 0 +# +# loop +# # Respond to discovery requests +# server.answer_discovery_requests +# +# # Accept new clients +# var new_clients = server.accept_clients +# for client in new_clients do +# # Read something and close connection +# assert client.reader.deserialize == "hello server" +# client.socket.close +# end +# end +# end +# ~~~ module network import server -- 1.7.9.5