summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Reichel <sre@ring0.de>2012-07-22 11:08:22 +0200
committerSebastian Reichel <sre@ring0.de>2012-07-22 11:08:22 +0200
commit42b897076f533a6ffc925763e4dfdfe1493e9c89 (patch)
treea8b6ea33b7a3e9d2d3ed88f9c73513d2d4bdf735
parent77e9488cbb0c4c7dbb55470ec4cf2bbbe35a5d8d (diff)
downloadmicrocopterd-42b897076f533a6ffc925763e4dfdfe1493e9c89.tar.bz2
process socket request in the background
-rw-r--r--receiver/socket.vala21
1 files changed, 10 insertions, 11 deletions
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);
}
}