From 42b897076f533a6ffc925763e4dfdfe1493e9c89 Mon Sep 17 00:00:00 2001 From: Sebastian Reichel Date: Sun, 22 Jul 2012 11:08:22 +0200 Subject: process socket request in the background --- receiver/socket.vala | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'receiver/socket.vala') diff --git a/receiver/socket.vala b/receiver/socket.vala index 27f02f7..e9d8eed 100644 --- a/receiver/socket.vala +++ b/receiver/socket.vala @@ -24,39 +24,38 @@ public class RPCServer { } bool on_incoming_connection(SocketConnection con) { - stdout.printf("Got incoming connection\n"); - process_request(con); + log("RPCServer", LogLevelFlags.LEVEL_DEBUG, "Got incoming connection"); + process_request.begin(con); return true; } - void process_request(SocketConnection con) { + async void process_request(SocketConnection con) { var dis = new DataInputStream(con.input_stream); var dos = new DataOutputStream(con.output_stream); bool exit = false; try { while(!exit) { - size_t length; - string message = dis.read_line(out length); + string msg = yield dis.read_line_async(Priority.HIGH_IDLE); - if(length > 0) { - var pkg = new Variant.parsed(message); + if(msg != null) { + var pkg = new Variant.parsed(msg); var cmd = pkg.get_child_value(0).get_byte(); switch(cmd) { case Command.SetEngineSpeed: var engine = pkg.get_child_value(1).get_byte(); var speed = pkg.get_child_value(2).get_byte(); - stdout.printf("set engine speed: %d = %d\n", engine, speed); + log("RPCServer", LogLevelFlags.LEVEL_DEBUG, "set engine speed: %d = %d", engine, speed); set_speed(engine, speed); break; case Command.SetEngineSpeedAll: var speed = pkg.get_child_value(1).get_byte(); - stdout.printf("set engine speed of all engines: %d\n", speed); + log("RPCServer", LogLevelFlags.LEVEL_DEBUG, "set engine speed of all engines: %d", speed); set_speed_all(speed); break; default: - stdout.printf("Unknown Command: %s\n".printf(pkg.print(false))); + log("RPCServer", LogLevelFlags.LEVEL_WARNING, "Unknown Command: %s\n".printf(pkg.print(false))); break; } @@ -66,7 +65,7 @@ public class RPCServer { } } } catch(Error e) { - stderr.printf("%s\n", e.message); + log("RPCServer", LogLevelFlags.LEVEL_CRITICAL, "%s\n", e.message); } } -- cgit v1.2.3