Cours complet LUA Guide du programmeur en PDF


Télécharger Cours complet LUA Guide du programmeur en PDF

★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Cours complet LUA Guide du programmeur [Eng]

Chapitre 1. Concepts

Ce chapitre présente les concepts fondamentaux de LUA, l'interface de programmation d'application LU (unité logique) conventionnelle.

Les sujets abordés dans ce chapitre sont les suivants:

  • Qu'est-ce que LUA?
  • Choix de l'interface à utiliser (RUI ou SLI)

 · LU et sessions

Les verbes LUA

  • Exemple de séquence de communication LUA

Compatible avec LUA

Qu'est-ce que LUA?

LUA (Interface de programmation d'applications LU conventionnelle) est une API qui vous permet d'écrire des applications Communications Server pour communiquer avec des applications hôtes.

L'interface LUA est fournie au niveau de l'unité de demande / réponse (RU), permettant au programmeur de contrôler les messages SNA (Systems Network Architecture) envoyés entre Communications Server et l'hôte. Il peut être utilisé pour communiquer avec l'un des types de LU 0, 1, 2 ou 3 sur l'hôte; il appartient à l'application d'envoyer les messages SNA appropriés comme requis par l'application hôte.

Par exemple, vous pouvez utiliser LUA pour écrire un programme d'émulation 3270 qui communique avec une application hôte 3270; une version simple de cette application est incluse en tant qu'application exemple LUA avec Communications Server et décrite au Chapitre 6, «Exemple d'application LUA», à la page 147.

AIX, LINUX

Si votre système Communications Server prend en charge la passerelle SNA pour les communications avec les unités centrales en aval, vous pouvez également écrire une application LUA qui agit en tant que principal SNA pour les communications avec les unités secondaires sur ces unités centrales en aval. Cela vous permet d'émuler une application hôte sur le nœud Communications Server ou de décharger le traitement d'une application hôte vers le nœud Communications Server. Cette fonction est décrite comme «RUI primaire»; il est spécifique à Communications Server et ne peut pas être fourni par d'autres implémentations LUA.

Choisir l'interface à utiliser

LUA inclut deux interfaces de programmation différentes à différents niveaux:

Choisir l'interface à utiliser

  • L'interface RUI (Request Unit Interface) est fournie au niveau de l'unité de demande / réponse (RU), permettant au programmeur de contrôler les messages SNA (Systems Network Architecture) envoyés entre Communications Server et l'hôte. Il appartient à l'application de générer et d'envoyer les messages SNA appropriés selon les besoins de l'application hôte.

L'interface RUI prend en charge les profils de gestion de fonction SNA 2, 3, 4, 7 et 18 et les profils de services de transmission SNA 2, 3, 4 et 7.

  • L'interface de niveau session (SLI, Session-Level Interface) est une interface de niveau supérieur, permettant au programmeur de travailler à un niveau de message logique plutôt que d'être concerné par le détail de chaque EF. Par exemple:
  • La session peut être établie et terminée avec un seul verbe SLI (plutôt qu'avec une séquence de verbes RUI correspondant aux RU individuelles impliquées dans le démarrage et la fin de la session).
  • La bibliothèque SLI contrôle le chaînage lorsque l'application a besoin d'envoyer ou de recevoir des données plus longues que la longueur RU maximale spécifiée dans le BIND.
  • Pour la plupart des commandes SNA envoyées à l'hôte, la bibliothèque SLI peut créer la RU appropriée à la demande de l'application.

L'interface SLI prend en charge les profils de gestion de fonction SNA 3 et 4 et les profils de services de transmission SNA 3 et 4.

Une application ne peut utiliser qu'une seule de ces interfaces pour chaque session. Par exemple, s'il démarre une session à l'aide du RUI, il ne peut plus émettre de verbes SLI sur cette session.

Vous devez prendre en compte les points suivants avant de décider quelle API utiliser.

  • Le SLI gère certains des détails de chaque EF et de leur contenu, ce qui simplifie le traitement requis dans l'application. L'IUD exige que la demande traite chaque UR individuellement.
  • Le RUI fournit un contrôle sur le contenu détaillé des EF envoyées à l'hôte, et permet l'utilisation d'une large gamme de profils de liaison SNA. Le SLI n'offre pas le même degré de contrôle ou de flexibilité.

AIX, LINUX

  • RUI inclut le RUI principal (AIX / Linux uniquement), ce qui vous permet d'écrire une application qui joue le rôle de principal SNA pour les communications avec les PU en aval. L'interface SLI ne fournit pas cette fonction.

LUs et Sessions

La Figure 1, à la page 3, montre les composants SNA utilisés pour les communications LUA avec un hôte.

LUs et Sessions

Figure 1. Composants SNA utilisés pour les communications LUA

Une application LUA utilise une LU de type 0â € ™ 3 qui communique avec le système hôte au moyen du nœud Communications Server. Il existe trois sessions entre le nœud Communications Server et le nœud hôte, comme suit:

 · La session du point de contrôle des services de l'unité physique (PU-SSCP), entre l'unité centrale 2.1 et le point de contrôle des services système de l'hôte (SSCP); ceci est utilisé pour contrôler le PU.

 · La session SSCP, entre la LU Communications Server et le SSCP; Ceci est utilisé pour contrôler le LU.

 · La session LU, entre la LU Communications Server et la LU hôte; Ceci est utilisé pour le transfert de données entre la LU et l'application hôte.

L'interface de programmation d'application LUA permet aux applications d'envoyer et de recevoir des données sur la session SSCP et sur la session LU. Il ne fournit pas l'accès à la session PU-SSCP. Une application LUA peut envoyer des données sur cette session en utilisant le verbe Services de gestion (MS) TRANSFERÂ? Â € "MSâ €? DATA; Pour plus d'informations, reportez-vous au document IBM Communications Server pour AIX ou Linux MS Programmer ™ Guide.

LES FENÊTRES

Pour les systèmes d'exploitation Windows, TRANSFERÂ? MS â € "DATA est fourni dans le cadre de l'API CSV (Common Service Verb); Pour plus d'informations, reportez-vous au document IBM Communications Server for AIX ou Linux CSV Programmer's Guide.

AIX, LINUX

La Figure 2, à la page 4, montre les composants SNA utilisés pour les communications LUA utilisant RUI primaire vers une LU en aval.

Une application RUI primaire utilise une LU de type 0 â € "3 qui communique avec la LU en aval au moyen du noeud Communications Server. À partir du point de la LU en aval, la LU de Communications Server agit en tant que LU hôte et le nœud Communications Server agit en tant que SSCP de l'hôte. Les trois sessions entre ces composants et les restrictions sur l'accès à ces sessions sont équivalentes à celles d'une application LUA communiquant avec un hôte.

Chacune des sessions LU fournit deux priorités de messages: normal et accéléré. Les messages de flux accélérés ont la priorité sur les autres messages en attente d'être transmis sur la même session. Il existe quatre flux différents sur lesquels un message peut être envoyé ou reçu:

Session SSCP, flux accéléré

Session LU, flux accéléré

Session SSCP, flux normal

 · session LU, flux normal

Le flux normal de session LU transporte des données d'application; les autres flux sont utilisés pour les messages de contrôle et de démarrage.

L'implémentation Communications Server de LUA ne permet pas aux applications d'envoyer des données sur le flux accéléré SSCP et ne retournera pas de données à une application sur ce flux.

Configuration

Chaque unité logique utilisée par une application LUA doit être configurée à l'aide du programme d'administration Motif, du programme d'administration de ligne de commande ou de l'API NOF (pour plus d'informations, voir IBM Communications Server pour AIX Administration Guide, IBM Guide de l'administrateur de Communications Server pour Linux, le Guide du programmeur IBM Communications Server pour AIX NOF ou le Guide du programmeur NOF IBM Communications Server pour Linux). En outre, la configuration de Communications Server peut inclure des pools LU. Un pool est un groupe de LU avec des caractéristiques similaires, de sorte qu'une application peut utiliser n'importe quelle LU libre du groupe. Cela peut être utilisé pour allouer les LU selon le principe du premier arrivé, premier servi quand il y a plus d'applications que LU disponibles, ou pour fournir un choix de LUs sur différentes connexions.



Verbes LUA

Une application accède à LUA à travers les verbes LUA. Chaque verbe fournit des paramètres à LUA, qui exécute la fonction désirée et renvoie les paramètres à l'application.

RUI Sommaire des verbes

La liste suivante contient un bref résumé de chacun des verbes LUA RUI (pour une explication détaillée de chaque verbe, voir le chapitre 4, «Verbes RUI,» à la page 55):

RUI_BID

Ce verbe permet à l'application de déterminer quand les informations de l'hôte peuvent être lues.

RUI_INIT

Ce verbe configure la session SSCP pour une application LUA.

AIX, LINUX

RUI_INIT_PRIMARY

Ce verbe configure la session SSCP pour une application LUA agissant en tant que SNA principal pour les communications avec une LU en aval.

RUI_PURGE

Ce verbe annule un verbe RUI_READ en cours.

RUI_READ

Ce verbe reçoit des données ou des informations d'état envoyées par l'hôte à la LU de l'application LUA, soit sur la session SSCP, soit sur la session LU.

AIX, LINUX

RUI_REINIT

Ce verbe rétablit la session SSCP pour une application LUA après un échec de session. Il est destiné à être utilisé par une application qui utilisait une LU à partir d'un pool, et doit rétablir la session en utilisant la même LU afin de poursuivre son traitement.

RUI_TERM

Ce verbe termine la session SSCP pour une application LUA. Il fait également tomber la session LU si elle est active.

RUI_WRITE

Ce verbe envoie des données à l'hôte sur la session SSCP ou la session LU.

SLI Sommaire des verbes

La liste suivante contient un bref résumé de chacun des verbes LUA SLI (pour une explication détaillée de chaque verbe, voir le chapitre 5, «Verbes SLI,» à la page 99):

SLI_BID

Ce verbe permet à l'application de déterminer quand les informations de l'hôte peuvent être lues.

SLI_CLOSE

Ce verbe termine la session pour une application LUA.

SLI_OPEN

Ce verbe configure la session pour une application LUA.

SLI_PURGE

Ce verbe annule un verbe SLI_RECEIVE en suspens.

SLI_RECEIVE

Ce verbe reçoit des données ou des informations d'état envoyées par l'hôte à la LU de l'application LUA, soit sur la session SSCP, soit sur la session LU.

SLI_SEND

Ce verbe envoie des données à l'hôte sur la session SSCP ou la session LU.

Sur le verbe SLI_OPEN, l'application peut éventuellement spécifier les adresses de ses propres routines pour traiter les demandes BIND, STSN et SDT de l'hôte. S'il fournit ces routines et qu'une requête du type approprié arrive de l'hôte, LUA envoie un verbe supplémentaire à la routine appropriée fournie par l'application pour lui permettre de traiter la requête, comme suit.

SLI_BIND_ROUTINE

LUA envoie ce verbe à la routine BIND fournie par l'application lorsqu'une requête BIND arrive de l'hôte. L'application peut accepter le BIND, négocier les paramètres BIND, ou rejeter le BIND comme décrit dans "Informations SNA" à la page 34.

Si l'application ne fournit pas de routine BIND, LUA effectue une vérification BIND limitée et répond à l'hôte de manière appropriée.

SLI_STSN_ROUTINE

LUA envoie ce verbe à la routine STSN fournie par l'application lorsqu'une requête STSN arrive de l'hôte. L'application peut répondre au STSN ou le rejeter avec un code de détection SNA approprié, comme décrit dans «Informations SNA» à la page 34.

Si l'application ne fournit pas de routine STSN, LUA renvoie une réponse positive indiquant qu'aucune donnée n'est disponible.

SLI_SDT_ROUTINE

LUA envoie ce verbe à la routine SDT fournie par l'application lorsqu'une requête SDT arrive de l'hôte. L'application peut répondre au SDT ou le rejeter avec un code de détection SNA approprié, tel que décrit dans «Informations SNA» à la page 34.

Si l'application ne fournit pas de routine SDT, LUA renvoie une réponse positive.

Achèvement asynchrone du verbe

Certains verbes LUA se terminent rapidement, après un traitement local (par exemple le verbe RUI_PURGE); Cependant, la plupart des verbes prennent un certain temps, car ils nécessitent l'envoi et la réception de messages depuis le nœud ou depuis l'application hôte. Pour cette raison, LUA est implémenté en tant qu'interface asynchrone; Le contrôle peut être renvoyé à l'application alors qu'un verbe est toujours en cours, de sorte que l'application est libre de poursuivre le traitement (y compris l'émission d'autres verbes LUA).

AIX, LINUX

Lorsque le verbe se termine, LUA appelle une routine de rappel fournie par l'application. Cette routine peut effectuer un traitement supplémentaire sur les données renvoyées, émettre d'autres verbes LUA, ou simplement agir comme un indicateur que le verbe a terminé.

Les verbes RUI peuvent compléter synchrone ou asynchrone. L'application doit vérifier le code de retour principal dans le VCB pour déterminer quel mode d'achèvement s'applique pour chaque verbe.

Les verbes SLI sont toujours complets de manière asynchrone. Après l'émission du verbe, l'application ne doit pas accéder au VCB tant que sa routine de rappel n'a pas été appelée. Il peut traiter le VCB soit à partir de la routine de rappel, soit à partir du thread d'exécution principal du programme après la fin de la routine de rappel.

LES FENÊTRES

Lorsque le verbe se termine, LUA publie un message dans un descripteur de fenêtre fourni par l'application ou signale un descripteur d'événement fourni par l'application.

Pour plus d'informations, reportez-vous au Chapitre 2, «Conception et écriture d'applications LUA», page 13.

Exemple de séquence de communication LUA

La Figure 3, à la page 9, montre un exemple de séquence de communication LUA utilisant des verbes RUI, et la Figure 4, page 10, montre la séquence équivalente en utilisant les verbes SLI.

Dans l'exemple RUI, l'application effectue les étapes suivantes:

  1. Émets le verbe RUI_INIT pour établir la session SSCP. Le verbe RUI_INIT ne se termine pas jusqu'à ce que Communications Server ait reçu un message d'activation de l'unité logique (ACTLU) de l'hôte et a envoyé une réponse positive; Toutefois, ces messages sont gérés par Communications Server et non exposés à l'application LUA.
  2. Envoie un message INITSELF au SSCP, pour demander un BIND et lit la réponse.
  3. Lit un message BIND à partir de l'hôte et écrit la réponse. Ceci établit la session LU.
  4. Lit un message SDT de l'hôte, ce qui indique que l'initialisation est terminée et que le transfert de données peut commencer.
  5. Envoie une chaîne de données composée de trois EF (la dernière indique qu'une réponse définie est requise) et lit la réponse.
  6. Lit une chaîne de données composée de deux EF et écrit la réponse.

Exemple de séquence de communication LUA

  1. Lit un message UNBIND de l'hôte et écrit la réponse. Cela termine la session LU.
  2. émet le verbe RUI_TERM pour terminer la session SSCP. (Communications Server envoie un message NOTIFY à l'hôte et attend une réponse positive, mais ces messages sont gérés par Communications Server et non exposés à l'application LUA.)

L'exemple SLI montre la même séquence de messages circulant entre l'hôte et l'application. Les verbes SLI utilisés sont similaires à ceux utilisés dans l'exemple RUI, mais notez les différences suivantes:

SLI_OPEN gère l'initialisation complète de la session; l'application n'a pas besoin de lire et d'écrire chaque RU individuelle dans la séquence d'initialisation, comme dans l'exemple RUI.



LUA utilise les routines BIND et SDT de l'application (spécifiées sur SLI_OPEN) pour permettre à l'application de traiter les messages BIND et SDT de l'hôte. Ces routines doivent retourner de manière synchrone. Tous les autres verbes SLI sont complets de manière asynchrone.

SLI_RECEIVE et SLI_SEND gèrent des chaînes de données complètes, de sorte que l'application n'a besoin que d'un seul verbe pour recevoir ou envoyer les données, même si elle est suffisamment longue pour nécessiter deux ou trois RU. (Dans l'exemple RUI, l'application doit recevoir ou envoyer chaque RU avec un verbe séparé.)

La liste qui suit montre les abréviations utilisées dans la Figure 3 à la page 9et dans la Figure 4 à la page 10.

Session SSCP de la norme SSCP, flux normal

LU LU session normale, flux normal

LU LU LU session, flux accéléré

+ rsp Réponse positive au message indiqué

BC Begin chaîne

MC Milieu de chaîne

Chaîne d'extrémité EC

CD Changer le jeu d'indicateurs de direction

RQD Réponse définie requise

La figure 3, à la page 9, montre les verbes RUI utilisés pour démarrer une session, échanger des données et terminer la session, ainsi que les messages SNA envoyés et reçus. Les flèches indiquent la direction dans laquelle les messages SNA circulent.

...

Compatibilité LUA

Les verbes RUI_INIT_PRIMARY et RUI_REINIT sont des extensions de la spécification d'interface LUA standard. Ils ne sont pas disponibles sur un client Remote API sur Windows et peuvent ne pas être disponibles dans d'autres implémentations LUA.

Compatibilité LUA

LES FENÊTRES

L'implémentation de LUA sur le client Remote API sur Windows est conçue pour être compatible avec Windows LUA (tel que défini par la spécification WOSA SNA); les applications écrites pour Windows LUA peuvent être utilisées avec le client Remote API sans modification.

Chapitre 2. Conception et écriture d'applications LUA

Les informations contenues dans ce chapitre vous aideront à écrire des programmes d'application LUA. Les sujets suivants sont couverts:

Points d'entrée LUA pour les applications AIX ou Linux

Points d'entrée LUA pour les applications Windows

  • Émettre un verbe LUA

 · SNA information

  • Informations de configuration

 · Considérations AIX ou Linux

Considérations sur Windows

  • Rédaction d'applications portables

Points d'entrée LUA pour les applications AIX ou Linux

Les applications exécutées sous AIX ou Linux accèdent à LUA à l'aide de l'appel de fonction RUI ou SLI, en spécifiant l'adresse d'un bloc de contrôle de verbe (VCB) contenant des informations pour un verbe LUA. Communications Server renvoie le contrôle à l'application immédiatement.

Le VCB renvoyé contient une valeur indiquant si le traitement du verbe est toujours en cours ou terminé.

  • Dans certains cas, le traitement des verbes est toujours en cours lorsque le contrôle revient à l'application; Communications Server utilise ensuite une routine de rappel fournie par l'application pour renvoyer les résultats du traitement du verbe.
  • Dans d'autres cas, le traitement des verbes est terminé lorsque Communications Server renvoie le contrôle à l'application; Communications Server n'utilise pas la routine de rappel de l'application. Cela s'applique en particulier si le verbe a échoué aux vérifications initiales des paramètres de LUA ou aux vérifications d'état et ne peut donc pas être traité.
  • Pour SLI_OPEN, si les contrôles initiaux aboutissent, l'appel de la fonction SLI renvoie une valeur non nulle représentant l'identifiant de session de la nouvelle session. Communications Server utilise ensuite la routine de rappel fournie par l'application de la même manière que pour les autres verbes. L'application peut utiliser le nouvel ID de session pour émettre une plage limitée de verbes suivants sur la session, sans attendre l'appel de la routine de rappel. Pour plus de détails sur les verbes pouvant être émis dans cette situation, reportez-vous à la section «Interaction avec d'autres verbes» à la page 120.

Remarque: En raison du fonctionnement des routines de rappel du système d'exploitation, il est possible que la routine de rappel de l'application soit appelée avant que le contrôle ne retourne à l'application à partir de son appel de fonction initial pour le verbe. Cela signifie que, si la routine de rappel modifie ou supprime le VCB retourné, le thread principal d'exécution du programme peut être incapable de vérifier les paramètres VCB pour déterminer que le verbe fonctionne de manière asynchrone. Vous devrez peut-être en tenir compte dans la conception de votre application.

Les points d'entrée RUI et SLI sont définis dans le fichier d'en-tête LUA /usr/include/sna/lua_c.h (AIX) ou /opt/ibm/sna/include/lua_c.h (Linux).

Points d'entrée LUA pour les applications AIX ou Linux

Appel de fonction RUI

annuler RUI (verbe)

LUA_VERB_RECORD * verbe;

Appel de fonction SLI

AP_UINT32 SLI (verbe) LUA_VERB_RECORD * verbe;

Paramètres fournis Le paramètre fourni est:

verbe Pointeur vers un bloc de contrôle de verbe (VCB) contenant les paramètres de

verbe émis. La structure VCB est définie dans le fichier d'en-tête LUA lua_c.h et est décrite au Chapitre 3, «Structure de LUA VCB», à la page 45.

Remarque: Le LUB VCB contient de nombreux paramètres marqués comme «réservés»; certains d'entre eux sont utilisés en interne par le logiciel Communications Server, et d'autres ne sont pas utilisés dans cette version, mais peuvent être utilisés dans les futures versions. Votre application ne doit pas tenter d'accéder à l'un de ces paramètres réservés. à la place, il doit mettre à zéro le contenu entier de la VCB pour s'assurer que tous ces paramètres sont nuls, avant de définir d'autres paramètres qui sont utilisés par le verbe. Cela garantit que Communications Server n'interprétera aucun de ses paramètres utilisés en interne et que votre application continuera à fonctionner avec les futures versions de Communications Server dans lesquelles ces paramètres peuvent être utilisés pour fournir de nouvelles fonctions.

Pour définir le contenu VCB à zéro, utilisez memset: memset (vcb, 0, sizeof (vcb));

Valeurs renvoyées

Pour RUI et pour tous les verbes SLI à l'exception de SLI_OPEN, le point d'entrée ne renvoie pas de valeur. Les paramètres renvoyés dans le VCB indiquent si le verbe a terminé de manière synchrone ou se terminera de manière asynchrone; une fois le verbe terminé, le VCB contient les résultats du verbe.

Pour SLI_OPEN, le point d'entrée renvoie une valeur indiquant si la VCB a réussi les vérifications initiales de LUAâ:

  • Une valeur de retour de 0 (zéro) indique que le verbe a échoué aux vérifications initiales de LUA (par exemple parce que l'application a fourni des paramètres incorrects). Communications Server n'appelera pas la routine de rappel fournie par l'application.

 · Une valeur non nulle représente l'ID de session de la nouvelle session que SLI_OPEN va démarrer.



124