summaryrefslogtreecommitdiff
path: root/src/ivy.h
blob: 911f8302d85e617bff99ca3353b42f7184b65168 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*
 *
 * Ivy, C interface
 *
 * Copyright 1997-1998 
 * Centre d'Etudes de la Navigation Aerienne
 *
 * Main functions
 *
 * $Id$
 *
 */

#ifndef _IVY_H
#define _IVY_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, const 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 */

/* 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