1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-18 10:04:20 +03:00

Add a skeleton for lvmetad, a test client, and a temporary Makefile to build

them. These are currently mostly for testing the daemon-common code. LVMetaD
functionality is expected to trickle in soon though.
This commit is contained in:
Petr Rockai 2011-06-14 02:36:38 +00:00
parent 92658f5661
commit acf3616b3a
4 changed files with 115 additions and 0 deletions

26
daemons/lvmetad/Makefile Normal file
View File

@ -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

View 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. */

View File

@ -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;
}

View File

@ -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;
}