You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: CUPGE/L2/SDD/TP/TP10.md
+6-15
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,3 @@
1
-
2
-
3
1
# TP 10 : un middleware pour les connecter tous !
4
2
5
3
## 1. Introduction
@@ -9,7 +7,7 @@ Il s’agit d’un modèle de communication **compatible avec la programmation
9
7
Par opposition à certains autres bus logiciels, ivy ne se fonde pas sur un serveur central ou un annuaire qui permet de router les demandes d’un agent. Au lancement, tous les agents se présentent à un point de rendez-vous, le reste est transparent pour le programmeur !
10
8
En fait, le rôle d’ivy est **principalement d’établir une convention de communication entre applications**. Les messages sont échangés **sous une forme textuelle**, et la sélection des messages récupérés ou non par les agents est basée sur les expressions rationnelles (*regexp* en anglais ; famille de notations compactes et puissantes pour décrire certains ensembles de chaînes de caractères).
11
9
12
-
**A quoi cela peut-il bien servir ?** Bien que limité *à des échanges de messages textuels*, ce principe permet de prototyper très rapidement des applications hautement interactives (en ré-utilisant des agents déjà développés) voire de concevoir des systèmes adaptés spécifiquement aux besoins d’une personne, tout cela indépendamment du système.
10
+
**A quoi cela peut-il bien servir ?** Bien que limité à des échanges de messages textuels, ce principe permet de prototyper très rapidement des applications hautement interactives (en ré-utilisant des agents déjà développés) voire de concevoir des systèmes adaptés spécifiquement aux besoins d’une personne, tout cela indépendamment du système.
13
11
Par exemple, pour un système qui aurait à afficher du texte sur un écran, on peut très facilement remplacer cet affichage par un synthétiseur vocal sans faire aucun changement au cœur du système, qui se contenterait d’envoyer sur le bus de l’information à donner aux utilisateurs.
14
12
15
13
Les bibliothèques ivy sont disponibles sur différents systèmes d’exploitation (Sun Solaris, Linux, Win*, WinCE, Mac OS, Android, …) pour plusieurs langages de programmation (C, C++, C#, Java, Perl, Perl-Tk, Tcl, Tcl-Tk, Ada, Python, O-Caml, COM, VBA, Adobe Flash, …). [cf. **https://github.com/truillet/ivy**]
@@ -28,11 +26,9 @@ Cela revient ici à allouer de la mémoire pour l’objet qui va se connecter au
28
26
```c
29
27
IvyInit ("IvyTranslater", "Hello le monde", 0, 0, 0, 0);
30
28
```
31
-
32
29
Ici, l’agent apparaîtra sur le bus sous le nom de **IvyTranslater** et enverra le message *Hello le monde* dès qu’il sera connecté.
33
30
34
31
### 2.2 connexion
35
-
36
32
Le bus ivy se connecte sur un port d’une adresse IP (ou de broadcast) du réseau local : c’est le point de rendez-vous de tous les agents.
37
33
*L’adresse ivy* en elle-même se divise en 2 parties : **adresse_IP** et **adresse_port**
38
34
@@ -47,7 +43,6 @@ Le choix du port n’a pas d’importance particulière à partir du moment où
47
43
```c
48
44
IvyStart ("127.255.255.255:2010");
49
45
```
50
-
51
46
Ivy est lancé sur le réseau à l’adresse 127.255.255.255 sur le port 2010.
52
47
53
48
### 2.3 envoi et réception de messages
@@ -58,7 +53,6 @@ L’envoi de messages est extrêmement simple : il suffit de préparer la chaî
58
53
strcpy(arg, "Robert") ;
59
54
IvySendMsg ("Bonjour %s", arg);
60
55
```
61
-
62
56
Le message *Bonjour Robert* est envoyé sur le bus.
63
57
64
58
#### 2.3.2 abonnement et réception d’un message
@@ -67,16 +61,14 @@ Pour recevoir des messages du bus, il est nécessaire de s’abonner à des *pat
67
61
```c
68
62
IvyBindMsg (HelloCallback, 0, "^Hello (.*)");
69
63
```
70
-
71
-
Tous les messages de la forme « Hello *quelque chose* » seront traités par la fonction *HelloCallback*.
64
+
Tous les messages de la forme "Hello *quelque chose*" seront traités par la fonction *HelloCallback*.
72
65
73
66
### 2.4 fermeture de la connexion
74
67
Enfin la fermeture du bus permet de clore proprement l’échange de données. En voici encore un exemple :
Téléchargez [ivyGUI.zip](https://github.com/truillet/ivy/blob/master/code/ivyGUI.zip). Dézippez le. Une fois ce fichier sur votre répertoire courant, tapez la commande suivante dans votre console :
@@ -162,17 +154,16 @@ Remplissez les champs et appuyez sur **Multiplie**.
162
154
Dans ivyprobe, vous devriez voir apparaître une commande du style de celle présentée ci-dessous
0 commit comments