| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
| refmodule [2026/02/22 10:45] – [shm] root | refmodule [2026/04/17 18:58] (Version actuelle) – [sock] root |
|---|
| Le pseudo module //template// permet de tester ces 4 fonctions. | Le pseudo module //template// permet de tester ces 4 fonctions. |
| |
| | ==== conv ==== |
| | Module permettant de faire des conversions de texte en hexadécimal et Base64.\\ |
| | * ''toHexa'' : convertit le texte en clair (1er paramètre) en une chaine hexadécimale (2ème paramètre) |
| | * ''fromHexa'' : convertit la chaine en hexadécimal (1er paramètre) en son équivalent en texte clair (2ème paramètre) |
| | * ''toBase64'' : convertit le texte en clair (1er paramètre) en une chaine codée en Base64 (2ème paramètre) |
| | * ''fromBase64'' : convertit la chaine en Base64 (1er paramètre) en son équivalent en texte clair (2ème paramètre) |
| ==== file ==== | ==== file ==== |
| Module permettant de gérer les fichiers de l'OS de l'hôte exécutant le programme en cours. | Module permettant de gérer les fichiers de l'OS de l'hôte exécutant le programme en cours. |
| * ''set(path, contenu)'' : écrit la variable Dynamic ''contenu'' dans le fichier dont le chemin complet est donné dans ''path''. Génère une exception si le chemin est inconnu, inaccessible, ou si les données ne peuvent pas être écrites (droits,...) | * ''set(path, contenu)'' : écrit la variable Dynamic ''contenu'' dans le fichier dont le chemin complet est donné dans ''path''. Génère une exception si le chemin est inconnu, inaccessible, ou si les données ne peuvent pas être écrites (droits,...) |
| * ''size(path, lg)'' : renvoi la taille, dans la variable Number ''lg'' du fichier dont le chemin complet est donné par ''path'' | * ''size(path, lg)'' : renvoi la taille, dans la variable Number ''lg'' du fichier dont le chemin complet est donné par ''path'' |
| | * ''delete(path)'' : supprimer le fichier dont le chemin complet est donné dans ''path''. Génère une exception si le fichier ne peut pas être supprimé. |
| | * ''rename(old_path, new_path)'' : renomme/déplace le fichier ''old_path'' en ''new_path''. Génère une exception en cas d'erreur (droits, FS différents, chemin cible inexistant). |
| | * ''append(path, contenu)'' : écrit la variable Dynamic ''contenu'' à la fin du fichier dont le chemin complet est donné dans ''path''. S'il n'existait pas, le fichier est créé. Génère une exception en cas d'erreur. |
| * ''dir(data)'' : prend en compte le chemin donné par ''data'' et renvoi, dans la même variable, la liste des fichiers et répertoires trouvés dans le répertoire indiqué, en multi-champs. Les fichiers //spéciaux// ne sont pas retournés (Unix seulement), ni les pseudo fichiers ''.'' et ''..'' | * ''dir(data)'' : prend en compte le chemin donné par ''data'' et renvoi, dans la même variable, la liste des fichiers et répertoires trouvés dans le répertoire indiqué, en multi-champs. Les fichiers //spéciaux// ne sont pas retournés (Unix seulement), ni les pseudo fichiers ''.'' et ''..'' |
| ==== hash ==== | ==== hash ==== |
| * ''MD4(data, hash)'' : calcul le hash selon l'algorithme MD4 des données fournies dans ''data'' et renvoi le résultat dans la variable ''hash'' | * ''MD4(data, hash)'' : calcul le hash selon l'algorithme MD4 des données fournies dans ''data'' et renvoi le résultat dans la variable ''hash'' |
| * ''MD5(data, hash)'' : calcul le hash selon l'algorithme MD5 des données fournies dans ''data'' et renvoi le résultat dans la variable ''hash'' | * ''MD5(data, hash)'' : calcul le hash selon l'algorithme MD5 des données fournies dans ''data'' et renvoi le résultat dans la variable ''hash'' |
| | |
| ==== json ==== | ==== json ==== |
| NOTA : module/doc à revoir (treefetch et print) | NOTA : module/doc à revoir (treefetch et print) |
| * ''print(prettyprint, tmp1, tmp2)'' : restitue de manière lisible le contenu json dernièrement décodé dans la variable chaîne <prettyprint>. Utilise <tmp1> et <tmp2> en variables temporaires. | * ''print(prettyprint, tmp1, tmp2)'' : restitue de manière lisible le contenu json dernièrement décodé dans la variable chaîne <prettyprint>. Utilise <tmp1> et <tmp2> en variables temporaires. |
| * ''treeFetch(input, done)'' : récupère une série de clés, en utilisant les informations données par la hashtable <input>. Le nombre <done> renvoie @true quand la récupération est terminée, @false sinon. | * ''treeFetch(input, done)'' : récupère une série de clés, en utilisant les informations données par la hashtable <input>. Le nombre <done> renvoie @true quand la récupération est terminée, @false sinon. |
| | |
| | ==== lex ==== |
| | Module permettant de faire des analyses syntaxiques sur des chaines, selon des règles données en paramètre. |
| | * ''compile'' : à partir des règles lex en premier paramètre, génère le format interne utilisé par le module, pour les analyses de chaines en entrée. Si le 3ème paramètre est présent, de type //hashtable//, elle est remplie avec les constantes correspondant aux numéros de chaque règle |
| | * ''analyze'' : à partir des règles au format interne, en premier paramètre, lit la chaine en 2ème paramètre et génère le résultat de l'analyse syntaxique dans le 3ème paramètre. Le résultat contient les tokens trouvés, selon 3 champs en multi-champs ; chaque sous-champ donne l'élément trouvé, dans l'ordre : |
| | - valeur du token en hexa (à décoder avec [[refmodule#conv|conv&fromHexa]]) |
| | - numéro de la regle trouvée pour le token, à comparer avec les constantes créées suite à l'appel de la fonction // compile// |
| | - position du token trouvé dans la chaine source (1er paramètre) |
| | * ''getToken'' : renvoie dans la //hashtable// en 3eme paramètre le token trouvé (''.ruleNumber'' ''.ruleValue'' ''.ruleLocation''), indice dans le 2ème paramètre, à partir de la liste de tous les tokens trouvés depuis le dernier //analyze// (résultat en 1er paramètre). Si l'indice du token demandé n'est pas présent dans le résultat, ''.ruleNumber'' est renvoyé à 0. |
| |
| ==== lzw ==== | ==== lzw ==== |
| * ''X'', ''Y'' : coordonnées x,y du coin haut/gauche de l'image dans la page | * ''X'', ''Y'' : coordonnées x,y du coin haut/gauche de l'image dans la page |
| * ''Image'' : numéro de l'image | * ''Image'' : numéro de l'image |
| * ''loadImage(image)'' : charge dans le module, pour un usage ultérieur, l'image dont le contenu est passé dans la chaîne <image>. La première image chargée porte le numéro 1, etc. | * ''loadImage(image)'' : charge dans le module, pour un usage ultérieur, l'image dont le contenu est passé dans la chaîne <image>. La première image chargée porte le numéro 1, etc. Formats supportés : BMP 32bpp et GIF. |
| * ''delImage(image)'' : supprime l'image numéro <image> du module ; elle ne pourra plus être utilisée par la suite (NOTA pbm de numéro avec suppression) | * ''delImage(image)'' : supprime l'image numéro <image> du module ; elle ne pourra plus être utilisée par la suite (NOTA pbm de numéro avec suppression) |
| * ''listing(input, content)'' : créé un document Pdf, de type //listing//, avec les données textuelle de <content> et renvoie le contenu du Pdf généré dans <content>. Les éléments permettant de créer le listing sont donnés par la hashtable <input> qui doit contenir les champs suivants : | * ''listing(input, content)'' : créé un document Pdf, de type //listing//, avec les données textuelle de <content> et renvoie le contenu du Pdf généré dans <content>. Les éléments permettant de créer le listing sont donnés par la hashtable <input> qui doit contenir les champs suivants : |
| |
| ==== shm ==== | ==== shm ==== |
| | NOTA : module à finir, revoir doc (newprocessshmreader/writer) |
| Module gérant la communication inter-processus, basée sur des messages textes. Chaque processus possède une //queue// qui permet de recevoir les messages émis par les autres processus. | Module gérant la communication inter-processus, basée sur des messages textes. Chaque processus possède une //queue// qui permet de recevoir les messages émis par les autres processus. |
| * ''get(content)'' : renvoi dans <content> le prochain message reçu depuis la queue interne du processus en cours. S'il n'y a pas de message à lire, renvoi //vide//. | * ''get(content)'' : renvoi dans <content> le prochain message reçu depuis la queue interne du processus en cours. S'il n'y a pas de message à lire, renvoi //vide//. |
| * ''set(message, process)'' : envoi le message texte <message> au processus identifié par <process>. L'identifiant d'un process est le nom donné au module principal dans l'instruction ''begin'' ou ''background'' du programme W. | * ''set(message, process)'' : envoi le message texte <message> au processus identifié par <process>. L'identifiant d'un process est le nom donné au module principal dans l'instruction ''begin'' ou ''background'' du programme W. |
| | |
| | ==== sock ==== |
| | Module gérant la communication sockets, côté //serveur// et côté //client//. Les données transitent __en clair__. |
| | * ''server(port)'' : créé un point d'entrée //serveur// sur le n° de <port> indiqué (n° autorisés : 1024 à 65535 uniquement). Le module ne gère qu'un seul serveur actif au même moment. |
| | * ''wait(timeout, clientSock)'' : attend une demande de connexion entrante depuis un client. Si une demande de connexion est acceptée, <clientSock> contient en retour un id de connexion, à mémoriser car il servira a identifier la connexion à utiliser lors des lectures ''get'' et écritures ''set'' entre ce client et le serveur. Si aucune connexion n'est demandée au bout du délai //timeout// (en secondes), l'id renvoyé dans <clientSock> est négatif, confirmant qu'aucune de demande de connexion n'est arrivée dans le délai indiqué. Le module gère plusieurs connexions entrantes simultanées. |
| | * ''stopServer'' : supprime le point d'entrée serveur créé avec ''server''. |
| | * ''connect(host, port, socket)'' : initie une connexion socket au serveur <host> sur le n° de <port> (sans limitation de numéro). <host> peut contenir un nom de serveur, mais aussi une adresse IP v4. Quand la demande est acceptée par le serveur, <socket> contient en retour un id de connexion, à mémoriser car il servira a identifier la connexion à utiliser lors des lectures ''get'' / écritures ''set'' entre ce client et le serveur. Quand la demande est refusée, une exception est générée. Le module gère plusieurs connexions sortantes simultanées. |
| | * ''stop(socket)'' : arrête la connexion identifiée par l'id <socket>, que ce soit la partie cliente donnée par ''connect'' aussi bien que la partie serveur donnée par ''wait''. |
| | * ''get(socket, data, timeout)'' : lit les données venant de l'autre côté de la connexion identifiée par l'id <socket>. Les données lues sont renvoyées dans la chaîne <data>. Si aucune donnée d'est disponible au bout du délai <timeout> donné, (en secondes), la chaîne <data> est renvoyée //vide//. |
| | * ''set(socket, data)'' : écrit les données de <data> sur la connexion identifiée par l'id <socket>. |
| ==== system ==== | ==== system ==== |
| Module gérant les liens avec le shell et l'OS hôte. | Module gérant les liens avec le shell et l'OS hôte. |