diff options
Diffstat (limited to 'ivyprobe.c')
-rw-r--r-- | ivyprobe.c | 199 |
1 files changed, 0 insertions, 199 deletions
diff --git a/ivyprobe.c b/ivyprobe.c deleted file mode 100644 index f41f310..0000000 --- a/ivyprobe.c +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Ivy probe - * - * Copyright (C) 1997-2000 - * Centre d'Études de la Navigation Aérienne - * - * Main and only file - * - * Authors: François-Régis Colin <fcolin@cena.fr> - * - * $Id$ - * - * Please refer to file version.h for the - * copyright notice regarding this software - */ - - -#define IVYMAINLOOP - - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <getopt.h> - -#include "ivyloop.h" -#include "ivysocket.h" -#include "ivy.h" -#include "timer.h" - -int app_count = 0; -int wait_count = 0; - -void Callback (IvyClientPtr app, void *user_data, int argc, char *argv[]) -{ - int i; - printf ("%s sent ",IvyGetApplicationName(app)); - for (i = 0; i < argc; i++) - printf(" '%s'",argv[i]); - printf("\n"); -} - -void HandleStdin (Channel channel, HANDLE fd, void *data) -{ - char buf[4096]; - char *line; - char *cmd; - char *arg; - int id; - IvyClientPtr app; - int err; - line = fgets(buf, 4096, stdin); - if (!line) { - IvyChannelClose (channel); - IvyStop(); - - return; - } - if (*line == '.') { - cmd = strtok (line, ".: \n"); - - if (strcmp (cmd, "die") == 0) { - arg = strtok (NULL, " \n"); - if (arg) { - app = IvyGetApplication (arg); - if (app) - IvySendDieMsg (app); - else printf ("No Application %s!!!\n",arg); - } - - } else if (strcmp(cmd, "dieall-yes-i-am-sure") == 0) { - arg = IvyGetApplicationList(); - arg = strtok (arg, " \n"); - while (arg) { - app = IvyGetApplication (arg); - if (app) - IvySendDieMsg (app); - else - printf ("No Application %s!!!\n",arg); - arg = strtok (NULL, " "); - } - - } else if (strcmp(cmd, "bind") == 0) { - arg = strtok (NULL, "'"); - if (arg) { - IvyBindMsg (Callback, NULL, arg); - } - - } else if (strcmp(cmd, "where") == 0) { - arg = strtok (NULL, " \n"); - if (arg) { - app = IvyGetApplication (arg); - if (app) - printf ("Application %s on %s\n",arg, IvyGetApplicationHost (app)); - else printf ("No Application %s!!!\n",arg); - } - } else if (strcmp(cmd, "direct") == 0) { - arg = strtok (NULL, " \n"); - if (arg) { - app = IvyGetApplication (arg); - if (app) { - arg = strtok (NULL, " "); - id = atoi (arg) ; - arg = strtok (NULL, "'"); - IvySendDirectMsg (app, id, arg); - } else - printf ("No Application %s!!!\n",arg); - } - - } else if (strcmp(cmd, "who") == 0) { - printf("Apps: %s\n", IvyGetApplicationList()); - - } else if (strcmp(cmd, "help") == 0) { - fprintf(stderr,"Commands list:\n"); - printf(" .help - this help\n"); - printf(" .quit - terminate this application\n"); - printf(" .die appname - send die msg to appname\n"); - printf(" .dieall-yes-i-am-sure - send die msg to all applis\n"); - printf(" .direct appname id 'arg' - send direct msg to appname\n"); - printf(" .where appname - on which host is appname\n"); - printf(" .bind 'regexp' - add a msg to receive\n"); - printf(" .who - who is on the bus\n"); - } else if (strcmp(cmd, "quit") == 0) { - exit(0); - } - } else { - cmd = strtok (buf, "\n"); - err = IvySendMsg (cmd); - printf("-> Sent to %d peer%s\n", err, err == 1 ? "" : "s"); - } -} - -void ApplicationCallback (IvyClientPtr app, void *user_data, IvyApplicationEvent event) -{ - char *appname; - char *host; - char **msgList; - appname = IvyGetApplicationName (app); - host = IvyGetApplicationHost (app); - switch (event) { - - case IvyApplicationConnected: - app_count++; - printf("%s connected from %s\n", appname, host); -/* printf("Application(%s): Begin Messages\n", appname);*/ - msgList = IvyGetApplicationMessages (app); - while (*msgList ) - printf("%s subscribes to '%s'\n",appname,*msgList++); -/* printf("Application(%s): End Messages\n",appname);*/ - if (app_count == wait_count) - IvyChannelSetUp (0, NULL, NULL, HandleStdin); - break; - - case IvyApplicationDisconnected: - app_count--; - printf("%s disconnected from %s\n", appname, host); - break; - - default: - printf("%s: unkown event %d\n", appname, event); - break; - } -} - - -int main(int argc, char *argv[]) -{ - int c; - int timer_test = 0; - char busbuf [1024] = ""; - const char* bus = 0; - while ((c = getopt(argc, argv, "d:b:w:t")) != EOF) - switch (c) { - case 'b': - strcpy (busbuf, optarg); - bus = busbuf; - break; - case 'w': - wait_count = atoi(optarg) ; - break; - case 't': - timer_test = 1; - break; - } - - /* Mainloop management */ - - IvyInit ("IVYPROBE", "IVYPROBE READY", ApplicationCallback,NULL,NULL,NULL); - for (; optind < argc; optind++) - IvyBindMsg (Callback, NULL, argv[optind]); - - if (wait_count == 0) - IvyChannelSetUp (0, NULL, NULL, HandleStdin); - - IvyStart (bus); - - IvyMainLoop (0); - return 0; -} |