]> sourceware.org Git - lvm2.git/commitdiff
Add a skeleton for lvmetad, a test client, and a temporary Makefile to build
authorPetr Rockai <prockai@redhat.com>
Tue, 14 Jun 2011 02:36:38 +0000 (02:36 +0000)
committerPetr Rockai <prockai@redhat.com>
Tue, 14 Jun 2011 02:36:38 +0000 (02:36 +0000)
them. These are currently mostly for testing the daemon-common code. LVMetaD
functionality is expected to trickle in soon though.

daemons/lvmetad/Makefile [new file with mode: 0644]
daemons/lvmetad/lvmetad-client.h
daemons/lvmetad/lvmetad-core.c [new file with mode: 0644]
daemons/lvmetad/testclient.c [new file with mode: 0644]

diff --git a/daemons/lvmetad/Makefile b/daemons/lvmetad/Makefile
new file mode 100644 (file)
index 0000000..1d44377
--- /dev/null
@@ -0,0 +1,26 @@
+#
+# WARNING
+#
+# This is a temporary Makefile. You need to edit the IPATH/LPATH variables to
+# point to build-dir of LVM2. You may then just run "make" to build the lvmetad
+# binary and the test client.
+#
+
+SHARED = ../common/daemon-shared.c
+CLIENT = ../common/daemon-client.c $(SHARED)
+SERVER = ../common/daemon-server.c $(SHARED)
+SHARED_H = ../common/daemon-shared.h
+CLIENT_H = ../common/daemon-client.h $(SHARED_H)
+SERVER_H = ../common/daemon-server.h $(SHARED_H)
+
+LIBS = -ldevmapper -lpthread
+IPATH = -I../common -I/srv/build/lvm2/cvs-lvmetad/default/include
+LPATH = -L/srv/build/lvm2/cvs-lvmetad/default/libdm
+
+all: testclient lvmetad
+
+testclient: testclient.c $(CLIENT_H) $(CLIENT)
+       gcc -g testclient.c $(CLIENT) $(IPATH) $(LPATH) $(LIBS) -o testclient
+
+lvmetad: lvmetad-core.c ../common/daemon-server.c ../common/daemon-server.h ../common/daemon-shared.h ../common/daemon-shared.c
+       gcc -g lvmetad-core.c $(SERVER) $(IPATH) $(LPATH) $(LIBS) -o lvmetad
index ef3588bcd46d31c0841d251f2a5e3932f5916a7c..d5b3f843fb5b320b78381b3ca398cc110f4bb09e 100644 (file)
@@ -16,6 +16,7 @@
 #define _LVM_LVMETAD_CLIENT_H
 
 #include "daemon-client.h"
+#include "metadata-exported.h"
 
 /* Different types of replies we may get from lvmetad. */
 
diff --git a/daemons/lvmetad/lvmetad-core.c b/daemons/lvmetad/lvmetad-core.c
new file mode 100644 (file)
index 0000000..9f5deb0
--- /dev/null
@@ -0,0 +1,76 @@
+#include "metadata-exported.h"
+#include "../common/daemon-server.h"
+
+typedef struct {
+} lvmetad_state;
+
+static response handler(daemon_state s, client_handle h, request r)
+{
+       response res;
+       fprintf(stderr, "handling client request: %s\n", r.buffer);
+       res.error = 1;
+       res.buffer = strdup("hey hey.\n\n");
+       return res;
+}
+
+static int setup_post(daemon_state *s)
+{
+       lvmetad_state *ls = s->private;
+
+       /* if (ls->initial_registrations)
+          _process_initial_registrations(ds->initial_registrations); */
+
+       return 1;
+}
+
+static void usage(char *prog, FILE *file)
+{
+       fprintf(file, "Usage:\n"
+               "%s [-V] [-h] [-d] [-d] [-d] [-f]\n\n"
+               "   -V       Show version of lvmetad\n"
+               "   -h       Show this help information\n"
+               "   -d       Log debug messages to syslog (-d, -dd, -ddd)\n"
+               "   -R       Replace a running lvmetad instance, loading its data\n"
+               "   -f       Don't fork, run in the foreground\n\n", prog);
+}
+
+int main(int argc, char *argv[])
+{
+       signed char opt;
+       daemon_state s;
+       lvmetad_state ls;
+       int _restart = 0;
+
+       s.private = &ls;
+       s.setup_post = setup_post;
+       s.handler = handler;
+       s.socket_path = "/var/run/lvm/lvmetad.socket";
+       s.pidfile = "/var/run/lvm/lvmetad.pid";
+
+       while ((opt = getopt(argc, argv, "?fhVdR")) != EOF) {
+               switch (opt) {
+               case 'h':
+                       usage(argv[0], stdout);
+                       exit(0);
+               case '?':
+                       usage(argv[0], stderr);
+                       exit(0);
+               case 'R':
+                       _restart++;
+                       break;
+               case 'f':
+                       s.foreground = 1;
+                       break;
+               case 'd':
+                       s.log_level++;
+                       break;
+               case 'V':
+                       printf("lvmetad version 0\n");
+                       exit(1);
+                       break;
+               }
+       }
+
+       daemon_start(s);
+       return 0;
+}
diff --git a/daemons/lvmetad/testclient.c b/daemons/lvmetad/testclient.c
new file mode 100644 (file)
index 0000000..5d8752b
--- /dev/null
@@ -0,0 +1,12 @@
+#include "lvmetad-client.h"
+
+int main() {
+       daemon_handle h = lvmetad_open();
+       daemon_request rq = { .buffer= "hello worldn\n" };
+       int i;
+       for (i = 0; i < 5; ++i ) {
+               daemon_reply reply = daemon_send(h, rq);
+               fprintf(stderr, "daemon says: %s\n", reply.buffer);
+       }
+       return 0;
+}
This page took 0.043769 seconds and 5 git commands to generate.