From 8801da55330a67a7080e4d27f32d93cbc7b1079b Mon Sep 17 00:00:00 2001 From: chatty Date: Fri, 8 Jan 1999 10:40:32 +0000 Subject: testivy -> ivyprobe --- src/Makefile | 20 ++--- src/ivyprobe.c | 260 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/testivy.c | 254 ------------------------------------------------------- 3 files changed, 270 insertions(+), 264 deletions(-) create mode 100644 src/ivyprobe.c delete mode 100644 src/testivy.c (limited to 'src') diff --git a/src/Makefile b/src/Makefile index bc871cb..cde20ed 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,7 +1,7 @@ # # Ivy, C interface # -# Copyright 1997-1998 +# Copyright 1997-1999 # Centre d'Etudes de la Navigation Aerienne # # Makefile @@ -33,19 +33,19 @@ static-libs: libivy.a libgivy.a libxtivy.a shared-libs: libivy.so.$(MAJOR).$(MINOR) libgivy.so.$(MAJOR).$(MINOR) libxtivy.so.$(MAJOR).$(MINOR) -commands: testivy testxtivy +commands: ivyprobe ivyxtprobe givy.o: ivy.c $(CC) -DGNU_REGEXP -fPIC -c $(CFLAGS) -o givy.o ivy.c -testivy: testivy.o libivy.a - $(CC) $(CFLAGS) -o testivy testivy.o -L. -livy +ivyprobe: ivyprobe.o libivy.a + $(CC) $(CFLAGS) -o ivyprobe ivyprobe.o -L. -livy -testxtivy.o : testivy.c - $(CC) $(CFLAGS) -c testivy.c -o testxtivy.o -I$(XTINC) -DXTMAINLOOP +ivyxtprobe.o : ivyprobe.c + $(CC) $(CFLAGS) -c ivyprobe.c -o ivyxtprobe.o -I$(XTINC) -DXTMAINLOOP -testxtivy: testxtivy.o libxtivy.a - $(CC) -o testxtivy testxtivy.o -L. -L$(XTLIB) -lxtivy -lXt -lX11 +ivyxtprobe: ivyxtprobe.o libxtivy.a + $(CC) -o ivyxtprobe ivyxtprobe.o -L. -L$(XTLIB) -lxtivy -lXt -lX11 libivy.a: $(OBJ) rm -f $@ @@ -73,8 +73,8 @@ clean: -rm -f *.o *.a *.so *~ install: all - install -m755 testivy $(DESTDIR)/usr/bin - install -m755 testxtivy $(DESTDIR)/usr/X11R6/bin + install -m755 ivyprobe $(DESTDIR)/usr/bin + install -m755 ivyxtprobe $(DESTDIR)/usr/X11R6/bin install -m644 libivy.a $(DESTDIR)/usr/lib install -m644 libgivy.a $(DESTDIR)/usr/lib diff --git a/src/ivyprobe.c b/src/ivyprobe.c new file mode 100644 index 0000000..6135e52 --- /dev/null +++ b/src/ivyprobe.c @@ -0,0 +1,260 @@ +/* + * + * Ivy probe + * + * Copyright 1997-1999 + * Centre d'Etudes de la Navigation Aerienne + * + * + * Main and only file + * + * $Id$ + * + */ + +#include +#include +#include +#ifdef WIN32 +#include +#else +#include +#include +#endif +#ifdef XTMAINLOOP +#include "ivyxtloop.h" +#else +#include "ivyloop.h" +#endif +#include "ivysocket.h" +#include "ivy.h" +#include "timer.h" +#ifdef XTMAINLOOP +#include +XtAppContext cntx; +#endif + +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 ) + { +#ifdef XTMAINLOOP + IvyXtChannelClose( channel ); +#else + IvyChannelClose( channel ); + IvyChannelStop(); +#endif + 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); + } + } + 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, " "); + } + + } + + if ( strcmp(cmd, "bind" ) == 0 ) + { + arg = strtok( NULL, "'" ); + if ( arg ) + { + IvyBindMsg( Callback, NULL, arg ); + } + } + 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); + } + } + 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); + } + + } + if ( strcmp(cmd, "who") == 0 ) + { + printf("Apps: %s\n", IvyGetApplicationList()); + } + 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(" .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"); + } + 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 ) +#ifdef XTMAINLOOP + IvyXtChannelSetUp( 0, NULL, NULL, HandleStdin); +#else + IvyChannelSetUp( 0, NULL, NULL, HandleStdin); +#endif + break; + case IvyApplicationDisconnected: + app_count--; + printf("%s disconnected from %s\n", appname, host); + break; + default: + printf("%s: unkown event %d\n", appname, event); + break; + } + +} +#ifndef XTMAINLOOP +void TimerCall(TimerId id, void *user_data, unsigned long delta) +{ + printf("Timer callback: %d delta %lu ms\n", (int)user_data, delta ); + IvySendMsg( "TEST TIMER %d", (int)user_data); + /*if ( (int)user_data == 5 ) TimerModify( id, 2000 );*/ +} +#endif +int main(int argc, char *argv[]) +{ + + unsigned short bport = DEFAULT_BUS; + int c; + int timer_test = 0; + char dbuf [1024] = ""; + const char* domains = 0; + while ((c = getopt(argc, argv, "d:b:w:t")) != EOF) + switch (c) + { + case 'b': + bport = atoi(optarg) ; + break; + case 'd': + if (domains) + strcat (dbuf, ","); + else + domains = dbuf; + strcat (dbuf, optarg); + break; + case 'w': + wait_count = atoi(optarg) ; + break; + case 't': + timer_test = 1; + break; + } + /* Mainloop management */ +#ifdef XTMAINLOOP + /*XtToolkitInitialize();*/ + cntx = XtCreateApplicationContext(); + IvyXtChannelAppContext( cntx ); +#endif + IvyInit ("IVYPROBE", bport, "IVYPROBE READY", ApplicationCallback,NULL,NULL,NULL); + for ( ; optind < argc; optind++ ) + IvyBindMsg( Callback, NULL, argv[optind] ); + if ( wait_count == 0 ) +#ifdef XTMAINLOOP + IvyXtChannelSetUp( 0, NULL, NULL, HandleStdin); +#else + IvyChannelSetUp( 0, NULL, NULL, HandleStdin); +#endif + IvyStart (domains); + if ( timer_test ) + { +#ifndef XTMAINLOOP + TimerRepeatAfter( TIMER_LOOP, 1000, TimerCall, (void*)1 ); + TimerRepeatAfter( 5, 5000, TimerCall, (void*)5 ); +#endif + } +#ifdef XTMAINLOOP + XtAppMainLoop(cntx); +#else + IvyMainLoop(0); +#endif + return 0; +} diff --git a/src/testivy.c b/src/testivy.c deleted file mode 100644 index 13c64b3..0000000 --- a/src/testivy.c +++ /dev/null @@ -1,254 +0,0 @@ -/* - * - * Ivy probe - * - * Copyright 1997-1998 - * Centre d'Etudes de la Navigation Aerienne - * - * - * Main and only file - * - * $Id$ - * - */ - -#include -#include -#include -#ifdef WIN32 -#include -#else -#include -#include -#endif -#ifdef XTMAINLOOP -#include "ivyxtloop.h" -#else -#include "ivyloop.h" -#endif -#include "ivysocket.h" -#include "ivy.h" -#include "timer.h" -#ifdef XTMAINLOOP -#include -XtAppContext cntx; -#endif - -int app_count = 0; -int wait_count = 0; - -void Callback( BusClientPtr app, void *user_data, int argc, char *argv[]) -{ - int i; - printf ("%s sent ",GetApplicationName(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; - BusClientPtr app; - int err; - line = fgets(buf, 4096, stdin); - if ( !line ) - { -#ifdef XTMAINLOOP - BusXtChannelClose( channel ); -#else - BusLoopChannelClose( channel ); - BusLoopChannelStop(); -#endif - return; - } - if ( *line == '.' ) - { - cmd = strtok( line, ".: \n"); - if ( strcmp(cmd, "die") == 0 ) - { - arg = strtok( NULL, " " ); - if ( arg ) - { - app = GetApplication( arg ); - if ( app ) - SendDieMsg( app ); - else printf( "No Application %s!!!\n",arg); - } - } - if ( strcmp(cmd, "dieall-yes-i-am-sure") == 0 ) - { - arg = GetApplicationList(); - arg = strtok( arg, " " ); - while ( arg ) - { - app = GetApplication( arg ); - if ( app ) - SendDieMsg( app ); - else printf( "No Application %s!!!\n",arg); - arg = strtok( NULL, " "); - } - - } - - if ( strcmp(cmd, "bind" ) == 0 ) - { - arg = strtok( NULL, "'" ); - if ( arg ) - { - BindMsg( Callback, NULL, arg ); - } - } - if ( strcmp(cmd, "where" ) == 0 ) - { - arg = strtok( NULL, " " ); - if ( arg ) - { - app = GetApplication( arg ); - if ( app ) - printf( "Application %s on %s\n",arg, GetApplicationHost( app )); - else printf( "No Application %s!!!\n",arg); - } - } - if ( strcmp(cmd, "direct" ) == 0 ) - { - arg = strtok( NULL, " " ); - if ( arg ) - { - app = GetApplication( arg ); - if ( app ) - { - arg = strtok( NULL, " " ); - id = atoi( arg ) ; - arg = strtok( NULL, "'" ); - SendDirectMsg( app, id, arg ); - } - else printf( "No Application %s!!!\n",arg); - } - - } - if ( strcmp(cmd, "who") == 0 ) - { - printf("Apps: %s\n", GetApplicationList()); - } - 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(" .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"); - } - if ( strcmp(cmd, "quit") == 0 ) - { - exit(0); - } - } - else - { - cmd = strtok(buf, "\n"); - err = SendMsg( buf ); - printf("-> Sent to %d peer%s\n", err, err == 1 ? "" : "s"); - } -} - -void ApplicationCallback( BusClientPtr app, void *user_data, BusApplicationEvent event) -{ - char *appname; - char *host; - char **msgList; - appname = GetApplicationName( app ); - host = GetApplicationHost( app ); - switch ( event ) { - case BusApplicationConnected: - app_count++; - printf("%s connected from %s\n", appname, host); -/* printf("Application(%s): Begin Messages\n", appname);*/ - msgList = GetApplicationMessages( app ); - while( *msgList ) - printf("%s subscribes to '%s'\n",appname,*msgList++); -/* printf("Application(%s): End Messages\n",appname);*/ - if ( app_count == wait_count ) -#ifdef XTMAINLOOP - BusXtChannelSetUp( 0, NULL, NULL, HandleStdin); -#else - BusLoopChannelSetUp( 0, NULL, NULL, HandleStdin); -#endif - break; - case BusApplicationDisconnected: - app_count--; - printf("%s disconnected from %s\n", appname, host); - break; - default: - printf("%s: unkown event %d\n", appname, event); - break; - } - -} -#ifndef XTMAINLOOP -void TimerCall(TimerId id, void *user_data, unsigned long delta) -{ - printf("Timer callback: %d delta %lu ms\n", (int)user_data, delta ); - SendMsg( "TEST TIMER %d", (int)user_data); - /*if ( (int)user_data == 5 ) TimerModify( id, 2000 );*/ -} -#endif -int main(int argc, char *argv[]) -{ - - unsigned short bport = DEFAULT_BUS; - int c; - int timer_test = 0; - while ((c = getopt(argc, argv, "b:w:t")) != EOF) - switch (c) - { - case 'b': - bport = atoi(optarg) ; - break; - case 'w': - wait_count = atoi(optarg) ; - break; - case 't': - timer_test = 1; - break; - } - /* Mainloop management */ -#ifdef XTMAINLOOP - /*XtToolkitInitialize();*/ - cntx = XtCreateApplicationContext(); - BusXtChannelAppContext( cntx ); - BusSetChannelManagement( BusXtChannelInit, BusXtChannelSetUp, BusXtChannelClose ); -#else - BusSetChannelManagement( BusLoopChannelInit, BusLoopChannelSetUp, BusLoopChannelClose ); -#endif - BusInit ("IVYTEST", bport, "IVYTEST READY",ApplicationCallback,NULL,NULL,NULL); - for ( ; optind < argc; optind++ ) - BindMsg( Callback, NULL, argv[optind] ); - if ( wait_count == 0 ) -#ifdef XTMAINLOOP - BusXtChannelSetUp( 0, NULL, NULL, HandleStdin); -#else - BusLoopChannelSetUp( 0, NULL, NULL, HandleStdin); -#endif - BusStart( ); - if ( timer_test ) - { -#ifndef XTMAINLOOP - TimerRepeatAfter( TIMER_LOOP, 1000, TimerCall, (void*)1 ); - TimerRepeatAfter( 5, 5000, TimerCall, (void*)5 ); -#endif - } -#ifdef XTMAINLOOP - XtAppMainLoop(cntx); -#else - BusLoopChannelMainLoop(NULL); -#endif - return 0; -} -- cgit v1.1