Serialize struct from the client
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
#define STREQ(a, b) (strcmp((a), (b)) == 0)
|
#define STREQ(a, b) (strcmp((a), (b)) == 0)
|
||||||
|
|
||||||
void print_help(char *);
|
void print_help(char *);
|
||||||
enum guestfs_inpsect_command_const parse_command(char *);
|
enum guestfs_inspect_command_const parse_command(char *);
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
if (argc == 1) {
|
if (argc == 1) {
|
||||||
@@ -20,17 +20,23 @@ int main(int argc, char **argv) {
|
|||||||
zsock_t *daemon = zsock_new_req(ep);
|
zsock_t *daemon = zsock_new_req(ep);
|
||||||
free(ep);
|
free(ep);
|
||||||
|
|
||||||
struct guestfs_inpsect_command *command = malloc(80);
|
struct guestfs_inpsect_command *command = malloc(sizeof(struct guestfs_inpsect_command));
|
||||||
|
command->name = calloc(strlen(argv[1]) + 1, sizeof(char));
|
||||||
strcpy(command->name, argv[1]);
|
strcpy(command->name, argv[1]);
|
||||||
/* command->command = parse_command(argv[2]); */
|
command->command = parse_command(argv[2]);
|
||||||
/* command->args.ls = 5; */
|
command->args.ls.paths_length = 1;
|
||||||
|
command->args.ls.paths = calloc(1, sizeof(char *));
|
||||||
|
command->args.ls.paths[0] = calloc(strlen(argv[3] + 1), sizeof(char));
|
||||||
|
strcpy(command->args.ls.paths[0], argv[3]);
|
||||||
|
|
||||||
zsock_send(daemon, "b", command, 80);
|
zmsg_t *msg = command_to_zmsg(command);
|
||||||
|
zmsg_send(&msg, daemon);
|
||||||
|
|
||||||
zmsg_t *msg = zmsg_recv(daemon);
|
zmsg_t *rep = zmsg_recv(daemon);
|
||||||
char *res = zmsg_popstr(msg);
|
char *res = zmsg_popstr(msg);
|
||||||
printf("Res:\n%s\n", res);
|
printf("Res:\n%s\n", res);
|
||||||
zmsg_destroy(msg);
|
|
||||||
|
zmsg_destroy(&msg);
|
||||||
free(res);
|
free(res);
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
@@ -42,3 +48,11 @@ void print_help(char *name) {
|
|||||||
printf(" ls <path>\n");
|
printf(" ls <path>\n");
|
||||||
printf(" cat <path>\n");
|
printf(" cat <path>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum guestfs_inspect_command_const parse_command(char *input) {
|
||||||
|
if (STREQ(input, "ls")) {
|
||||||
|
return GUESTFS_COMMAND_LS;
|
||||||
|
}
|
||||||
|
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|||||||
@@ -105,8 +105,7 @@ static void *worker_task(zsock_t *pipe, char *disk_path) {
|
|||||||
printf("Received a message in the worker\n");
|
printf("Received a message in the worker\n");
|
||||||
|
|
||||||
printf("Size: %zu\tContent size: %zu\n", zmsg_size(msg), zmsg_content_size(msg));
|
printf("Size: %zu\tContent size: %zu\n", zmsg_size(msg), zmsg_content_size(msg));
|
||||||
struct guestfs_inpsect_command *command = malloc(80);
|
struct guestfs_inpsect_command *command = zmsg_to_command(msg);
|
||||||
memcpy(command, zmsg_last(msg), 80);
|
|
||||||
printf("Name: %s\n", command->name);
|
printf("Name: %s\n", command->name);
|
||||||
|
|
||||||
free(command);
|
free(command);
|
||||||
|
|||||||
Reference in New Issue
Block a user