next up previous contents
Next: Exécution de la commande Up: Les bases Previous: Réserver un serveur

Formulation de la commande

L'envoi de la commande se fait en deux temps. D'abord on l'écrit dans le bloc de communication puis on signifie au serveur qu'il peut l'exécuter.

Le bloc de communication est une structure qui contient plusieurs éléments, (nous les décrirons au fur et à mesure de leur emploi dans ce document) dont une table composée de couples <clé;contenu>. Le nombre de couples est limité dans la librairie (actuellement 100 dans ipcdef.h pour libipc.a).

Ces couples permettent le passage de paramètres nommés entre un client et un serveur.

Un de ces paramètres est le mot clé "COMMAND". C'est celui-ci que lit le serveur lorsqu'il débute une exécution de commande.

Remarque: si COMMAND="" ou si COMMAND n'est pas définit, le message "Pas de keyword COMMAND valide" apparaît sur le serveur et aucune erreur n'est générée.

L'écriture de ce mot-clé se fait avec la fonction shmput(). Cette fonction est destructive, car elle vide le bloc avant d'y placer le mot-clé et son contenu. Par exemple:

 
INTER > shmstat=shmput("COMMAND", "show i")
On voit que la commande contient des arguments sur la ligne de commande (ici le "i"). Dans le cas du lancement d'une procédure, les neuf arguments standards se passent sur la ligne de commande, auxquels on peut ajouter des paramètres dans le bloc de communication.

Pour stocker ces paramètres, on utilise la fonction non-destructive shmadd(). Remarque: cette fonction remplace le contenu d'un mot-clé en cas de synonyme. Par exemple, si on veut donner la valeur de tout les NX et NY du client au serveur, on tape:

 
INTER > shmstat=shmput("COMMAND", "@dosomething")
INTER > do i=1,dim(nx)
INTER >   shmstat=shmadd(lcat("NX(",itoa(i),")"),nx(i))
INTER >   shmstat=shmadd(lcat("NY(",itoa(i),")"),ny(i))
INTER > enddo
Attention, la longueur des noms des paramètres est limitée à 12 et la longueur des contenus et limitée à 128.

Maintenant que la commande et ses paramètres facultatifs sont inscrit dans le bloc de communication, le client doit signifier au serveur de démarrer la commande. Il peut le faire selon deux modes.

  1. Mode WAIT dans ce mode, lorsque le serveur termine l'exécution de la commande, le client a toujours la main. Le serveur lui est toujours réservé.
  2. Mode NOWAIT dans ce mode, lorsque le serveur termine l'exécution de la commande, il rend la main. Le client, s'il veut envoyer une nouvelle commande, devra à nouveau réserver le serveur.

next up previous contents
Next: Exécution de la commande Up: Les bases Previous: Réserver un serveur

WEBER Luc
Mon May 10 13:34:58 MET DST 1999