]> sourceware.org Git - lvm2.git/commitdiff
Parse the incoming config tree in daemon-server.c, providing the
authorPetr Rockai <prockai@redhat.com>
Mon, 27 Jun 2011 13:46:45 +0000 (13:46 +0000)
committerPetr Rockai <prockai@redhat.com>
Mon, 27 Jun 2011 13:46:45 +0000 (13:46 +0000)
daemon-specific handler with a struct config_tree pointer to look things up in.

daemons/common/daemon-client.c
daemons/common/daemon-server.c
daemons/common/daemon-server.h
daemons/lvmetad/lvmetad-core.c
daemons/lvmetad/testclient.c

index 698c5a15b2ff846301d48b42970fbd7c74a929f6..50d22ae75291e5ef305f8d37c04ab2d2fa582e69 100644 (file)
@@ -15,7 +15,7 @@ daemon_handle daemon_open(daemon_info i) {
                goto error;
        }
        memset(&sockaddr, 0, sizeof(sockaddr));
-       fprintf(stderr, "connecting to %s\n", i.socket);
+       fprintf(stderr, "[C] connecting to %s\n", i.socket);
        strcpy(sockaddr.sun_path, i.socket);
        sockaddr.sun_family = AF_UNIX;
        if (connect(h.socket_fd,(struct sockaddr *) &sockaddr, sizeof(sockaddr))) {
index 1791ddc8c35d9f1ad5c9774b257bcb3060dba52a..bdfe8735c43536e04458d77605fb77b87f702423 100644 (file)
@@ -107,7 +107,7 @@ static int _open_socket(daemon_state s)
                fprintf(stderr, "setting CLOEXEC on socket fd %d failed: %s\n", fd, strerror(errno));
        fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) | O_NONBLOCK);
 
-       fprintf(stderr, "creating %s\n", s.socket_path);
+       fprintf(stderr, "[D] creating %s\n", s.socket_path);
        memset(&sockaddr, 0, sizeof(sockaddr));
        strcpy(sockaddr.sun_path, s.socket_path);
        sockaddr.sun_family = AF_UNIX;
@@ -213,8 +213,10 @@ void *client_thread(void *baton)
                if (!read_buffer(b->client.socket_fd, &req.buffer))
                        goto fail;
 
-               /* TODO parse the buffer into req.cft */
+               req.cft = create_config_tree_from_string(req.buffer);
                response res = b->s.handler(b->s, b->client, req);
+               destroy_config_tree(req.cft);
+               dm_free(req.buffer);
 
                if (!res.buffer) {
                        /* TODO fill in the buffer from res.cft */
@@ -223,7 +225,6 @@ void *client_thread(void *baton)
                write_buffer(b->client.socket_fd, res.buffer, strlen(res.buffer));
 
                free(res.buffer);
-               free(req.buffer);
        }
 fail:
        /* TODO what should we really do here? */
index 03029f7c98e9db79b3cdd86dec5077735ec19587..2ac1554cb308edf7389eacf7f353d8135aa16328 100644 (file)
@@ -26,13 +26,13 @@ typedef struct {
 } client_handle;
 
 typedef struct {
-       struct config_node *cft;
+       struct config_tree *cft;
        char *buffer;
 } request;
 
 typedef struct {
        int error;
-       struct config_node *cft;
+       struct config_tree *cft;
        char *buffer;
 } response;
 
index 0235014472bd034591d35f1ed422951faa5e18f2..d3e17ede53b7d17aed8b664233b49e6782321594 100644 (file)
@@ -7,7 +7,7 @@ typedef struct {
 static response handler(daemon_state s, client_handle h, request r)
 {
        response res;
-       fprintf(stderr, "---- server obtained:\n%s\n----------------------\n", r.buffer);
+       fprintf(stderr, "[D] REQUEST: %s\n", find_config_str(r.cft->root, "request", "NONE"));
        res.error = 1;
        res.buffer = strdup("hey hey.\n\n");
        return res;
index 211ad2f4c62c09d6ece03715b2e34141734ba19c..6ff4ded188fdcd57fe709413adf92bd0ab04737b 100644 (file)
@@ -5,7 +5,7 @@ int main() {
        int i;
        for (i = 0; i < 5; ++i ) {
                daemon_reply reply = daemon_send_simple(h, "hello world", "param = %d", 3, NULL);
-               fprintf(stderr, "daemon says: %s\n", reply.buffer);
+               fprintf(stderr, "[C] obtained: %s\n", reply.buffer);
        }
        daemon_close(h);
        return 0;
This page took 0.038285 seconds and 5 git commands to generate.