]> git.ozlabs.org Git - petitboot/blobdiff - discover/discover-server.c
Fix out of source make dist
[petitboot] / discover / discover-server.c
index 225f58c4b41aa5ec8f9b7dbbda7e9d69accf55fb..e03a44a6ba8b564e306ff519169f2c74c7f22ea9 100644 (file)
 #include <asm/byteorder.h>
 
 #include <talloc/talloc.h>
+#include <waiter/waiter.h>
+#include <log/log.h>
 
 #include "pb-protocol/pb-protocol.h"
 #include "list/list.h"
 
-#include "log.h"
-#include "waiter.h"
 #include "device-handler.h"
+#include "discover-server.h"
 
 struct discover_server {
        int socket;
@@ -75,7 +76,8 @@ static void print_clients(struct discover_server *server)
                                client->fd);
 }
 
-static int client_write_message(struct discover_server *server,
+static int client_write_message(
+               struct discover_server *server __attribute__((unused)),
                struct client *client, struct pb_protocol_message *message)
 {
        int rc;
@@ -88,7 +90,7 @@ static int client_write_message(struct discover_server *server,
 }
 
 static int write_add_message(struct discover_server *server,
-               struct client *client, struct device *dev)
+               struct client *client, const struct device *dev)
 {
        struct pb_protocol_message *message;
        int len;
@@ -126,7 +128,7 @@ static int write_remove_message(struct discover_server *server,
 static int discover_server_process(void *arg)
 {
        struct discover_server *server = arg;
-       struct device *devices;
+       const struct device *devices;
        struct client *client;
        int fd, i, n_devices;
 
@@ -154,6 +156,26 @@ static int discover_server_process(void *arg)
        return 0;
 }
 
+void discover_server_notify_add(struct discover_server *server,
+               struct device *device)
+{
+       struct client *client;
+
+       list_for_each_entry(&server->clients, client, list)
+               write_add_message(server, client, device);
+
+}
+
+void discover_server_notify_remove(struct discover_server *server,
+               struct device *device)
+{
+       struct client *client;
+
+       list_for_each_entry(&server->clients, client, list)
+               write_remove_message(server, client, device->id);
+
+}
+
 void discover_server_set_device_source(struct discover_server *server,
                struct device_handler *handler)
 {