From dc706ef662bda4a843aa088696132078472400d5 Mon Sep 17 00:00:00 2001 From: ihm Date: Thu, 5 Mar 1998 17:31:32 +0000 Subject: Initial revision --- bus.h | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 bus.h (limited to 'bus.h') diff --git a/bus.h b/bus.h new file mode 100644 index 0000000..b0971a3 --- /dev/null +++ b/bus.h @@ -0,0 +1,75 @@ +#ifndef _BUS_H +#define _BUS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* numero par default du bus */ + +#define DEFAULT_BUS 2010 + +typedef struct _clnt_lst *BusClientPtr; + +typedef enum { BusApplicationConnected, BusApplicationDisconnected } BusApplicationEvent; + +extern void BusDefaultApplicationCallback( BusClientPtr app, void *user_data, BusApplicationEvent event ) ; +/* callback callback appele sur connection deconnection d'une appli */ +typedef void (*BusApplicationCallback)( BusClientPtr app, void *user_data, BusApplicationEvent event ) ; +/* callback appele sur reception de die */ +typedef void (*BusDieCallback)( BusClientPtr app, void *user_data, int id ) ; + +/* callback appele sur reception de messages normaux */ +typedef void (*MsgCallback)( BusClientPtr app, void *user_data, int argc, char **argv ) ; +/* callback appele sur reception de messages directs */ +typedef void (*MsgDirectCallback)( BusClientPtr app, void *user_data, int id, char *msg ) ; + +/* identifiant d'une expression reguliere ( Bind/Unbind ) */ +typedef struct _msg_rcv *MsgRcvPtr; + +/* filtrage des regexps */ +void BusClasses( int argc, char **argv); + +void BusInit( + const char *AppName, /* nom de l'application */ + unsigned short busnumber, /* numero de bus ( port UDP ) */ + const char *ready, /* ready Message peut etre NULL */ + BusApplicationCallback callback, /* callback appele sur connection deconnection d'une appli */ + void *data, /* user data passe au callback */ + BusDieCallback die_callback, /* last change callback before die */ + void *die_data ); /* user data */ + +void BusStart(); /* emission du bonjour */ +void BusLoop(); /* boucle principale */ + +/* query sur les applications connectees */ +char *GetApplicationName( BusClientPtr app ); +char *GetApplicationHost( BusClientPtr app ); +BusClientPtr GetApplication( char *name ); +char *GetApplicationList(); +char **GetApplicationMessages( BusClientPtr app); +/* demande de reception d'un message */ + +MsgRcvPtr BindMsg( MsgCallback callback, void *user_data, const char *fmt_regexp, ... ); /* avec sprintf prealable */ +void UnbindMsg( MsgRcvPtr id ); + +/* emmission d'un message d'erreur */ +void SendError( BusClientPtr app, int id, const char *fmt, ... ); + +/* emmission d'un message die pour terminer l'application */ +void SendDieMsg( BusClientPtr app ); + +/* emmission d'un message retourne le nb effectivement emis */ + +int SendMsg( const char *fmt_message, ... ); /* avec sprintf prealable */ + +/* Message Direct Inter-application */ + +void BindDirectMsg( MsgDirectCallback callback, void *user_data); +void SendDirectMsg( BusClientPtr app, int id, char *msg ); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file -- cgit v1.1