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;
write_add_message(server, client, device);
}
+ waiter_register(server->waitset, client->fd, WAIT_IN,
+ discover_server_process_message, client);
+
return 0;
}
}
server->waiter = waiter_register(server->waitset, server->socket,
- WAIT_IN, discover_server_process, server);
+ WAIT_IN, discover_server_process_connection, server);
return server;