diff options
author | vidon | 2005-02-24 15:15:24 +0000 |
---|---|---|
committer | vidon | 2005-02-24 15:15:24 +0000 |
commit | da1e670c74ab7422661fa8516f31f79758753bdc (patch) | |
tree | da4757e628d8a077a99f6a2723d4418c1035337f /src/ivy.c | |
parent | e9f667d046f4ddb6756848b4537add57fd96a539 (diff) | |
download | ivy-c-da1e670c74ab7422661fa8516f31f79758753bdc.zip ivy-c-da1e670c74ab7422661fa8516f31f79758753bdc.tar.gz ivy-c-da1e670c74ab7422661fa8516f31f79758753bdc.tar.bz2 ivy-c-da1e670c74ab7422661fa8516f31f79758753bdc.tar.xz |
Add functions to manipulate binding events
Diffstat (limited to 'src/ivy.c')
-rw-r--r-- | src/ivy.c | 44 |
1 files changed, 44 insertions, 0 deletions
@@ -123,6 +123,10 @@ static void *direct_user_data = 0; static IvyApplicationCallback application_callback; static void *application_user_data = 0; +/* callback appele sur ajout suppression de regexp */ +static IvyBindCallback application_bind_callback; +static void *application_bind_data = 0; + /* callback appele sur demande de terminaison d'application */ static IvyDieCallback application_die_callback; static void *application_die_user_data = 0; @@ -385,6 +389,10 @@ static void Receive( Client client, void *data, char *line ) snd->id = id; snd->str_regexp = strdup( arg ); snd->regexp = regexp; + if ( application_bind_callback ) + { + (*application_bind_callback)( clnt, application_bind_data, id, snd->str_regexp, IvyAddBind ); + } } } else @@ -409,6 +417,11 @@ static void Receive( Client client, void *data, char *line ) { printf("Error studying %s, message: %s\n",arg,errbuf); } + + if ( application_bind_callback ) + { + (*application_bind_callback)( clnt, application_bind_data, id, snd->str_regexp, IvyAddBind ); + } } } else @@ -426,6 +439,10 @@ static void Receive( Client client, void *data, char *line ) IVY_LIST_ITER( clnt->msg_send, snd, ( id != snd->id )); if ( snd ) { + if ( application_bind_callback ) + { + (*application_bind_callback)( clnt, application_bind_data, id, snd->str_regexp, IvyRemoveBind ); + } #ifndef USE_PCRE_REGEX free( snd->str_regexp ); #else @@ -651,6 +668,19 @@ void IvyInit (const char *appname, const char *ready, ready_message = ready; } +void IvySetBindCallback(IvyBindCallback bind_callback, void *bind_data + ) +{ + application_bind_callback=bind_callback; + application_bind_data=bind_data; +} + +void IvyDelBindCallback() +{ + application_bind_callback=0; + free(application_bind_data); + application_bind_data=0; +} void IvyClasses( int argc, const char **argv) { messages_classes_count = argc; @@ -901,6 +931,20 @@ void IvyDefaultApplicationCallback( IvyClientPtr app, void *user_data, IvyApplic break; } } +void IvyDefaultBindCallback( IvyClientPtr app, void *user_data, int id, char* regexp, IvyBindEvent event) +{ + switch ( event ) { + case IvyAddBind: + printf("Application: %s on %s add regexp %d : %s\n", IvyGetApplicationName( app ), IvyGetApplicationHost(app), id, regexp); + break; + case IvyRemoveBind: + printf("Application: %s on %s remove regexp %d :%s\n", IvyGetApplicationName( app ), IvyGetApplicationHost(app), id, regexp); + break; + default: + printf("Application: %s unkown event %d\n",IvyGetApplicationName( app ), event); + break; + } +} IvyClientPtr IvyGetApplication( char *name ) { |