summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--discover/discover-server.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/discover/discover-server.c b/discover/discover-server.c
index 21e15da..bafcb77 100644
--- a/discover/discover-server.c
+++ b/discover/discover-server.c
@@ -126,7 +126,26 @@ static int write_remove_message(struct discover_server *server,
return client_write_message(server, client, message);
}
-static int discover_server_process(void *arg)
+static int discover_server_process_message(void *arg)
+{
+ struct pb_protocol_message *message;
+ struct client *client = arg;
+
+ message = pb_protocol_read_message(client, client->fd);
+
+ if (!message)
+ return 0;
+
+ if (message->action != PB_PROTOCOL_ACTION_BOOT) {
+ pb_log("%s: invalid action %d\n", __func__, message->action);
+ return 0;
+ }
+
+ /* todo: process boot message */
+ return 0;
+}
+
+static int discover_server_process_connection(void *arg)
{
struct discover_server *server = arg;
struct client *client;
@@ -156,6 +175,9 @@ static int discover_server_process(void *arg)
write_add_message(server, client, device);
}
+ waiter_register(server->waitset, client->fd, WAIT_IN,
+ discover_server_process_message, client);
+
return 0;
}
@@ -222,7 +244,7 @@ struct discover_server *discover_server_init(struct waitset *waitset)
}
server->waiter = waiter_register(server->waitset, server->socket,
- WAIT_IN, discover_server_process, server);
+ WAIT_IN, discover_server_process_connection, server);
return server;
OpenPOWER on IntegriCloud