tsdesc

PURPOSE ^

C/C++ source

SYNOPSIS ^

C/C++ source

DESCRIPTION ^

C/C++ source

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 
0002 /*****************************************************************************
0003 
0004    NOM  DU MODULE        :  tsdesc.c
0005 
0006    DESCRIPTION DU MODULE :  module client de la bibliotheque TSLib
0007                 ensemble des fonctions de lectures de description
0008 
0009    Auteur       :       Vita-Maria GUZZI
0010    Societe      :       CR2A
0011    Projet       :       TSLib
0012 
0013    Date de Creation :   29/09/92
0014    Modifications    :
0015 
0016  *****************************************************************************/
0017 
0018 /*****************************************************************************
0019 
0020    Liste des fonctions du module :
0021 
0022     TSDescTrait
0023     TSDescDiag
0024     TSDescDon
0025     TSExist
0026 
0027  *****************************************************************************/
0028 #include <stdio.h>              /* bibliotheques standards           */
0029 #include <stdlib.h>
0030 #include <string.h>
0031 #include "tsdef.h"              /* liste des constantes utilisees */
0032 #include "tsconf.h"             /* configuration du client        */
0033 #if (client == MAC)
0034 
0035 #endif
0036 #include "tsfonc.h"             /* liste des fonctions appelees   */
0037 #include "tsmes.h"              /* liste des erreurs              */
0038 #include "tstype.h"             /* liste des types de donnees     */
0039 #include "tsext.h"              /* liste des variables globales   */
0040 #include "functs.h"        /* prototypes fcts TSLib */
0041 #include "tsarcad.h"        /* liste des types de ARCAD */
0042 /*-----------------------------------------------------------------------------
0043             TSDescTrait
0044 
0045   But : fonction demandant au serveur de lui envoyer la description d'un
0046     traitement
0047 
0048   Arguments :
0049     NomTrait  : nom du traitement
0050     NumVer    : numero de version
0051 
0052     DescTrait : description du traitement
0053 
0054   Retour          : compte-rendu d'execution
0055 
0056 ------------------------------------------------------------------------------*/
0057 
0058 
0059 Longint FAR_PASCAL
0060 TSDescTrait (char *NomTrait,
0061              Longint NumVer,
0062               pS_DescTrait *DescTrait)
0063 {
0064   Longint CR;
0065   Longint code_param;
0066 
0067 #if (client == MAC)
0068   ConnHandle NumSocket;         /* descripteur de la socket de communication */
0069 #else
0070   int NumSocket;                /* descripteur de la socket de communication */
0071 #endif
0072   short int CodeFonc;           /* code de la fonction TSLib appelee */
0073   Longint Resultat;            /* compte-rendu d'execution du client */
0074 
0075   /* test des pointeurs de chaines */
0076 
0077   code_param = ok;
0078  if (NomTrait == NULL)
0079     code_param = p_nomtrait;
0080   if (code_param != ok)
0081     return (Gestion_Erreur (erreur_chaine_vide, code_param));
0082 
0083 
0084   /* debut de communication */
0085   if ((Resultat = Debut_Communication (&NumSocket, 1)) != ok)
0086     return Resultat;
0087 
0088   /* emission du code de la fonction */
0089 
0090   if( compress_on)
0091     CodeFonc = fonc_tsdesctrait;
0092   else
0093     CodeFonc = -(fonc_tsdesctrait - MAX_FUNCT_NUMBER);
0094   if ((Resultat = Emission (NumSocket, (char *) &CodeFonc, taille_short,
0095 p_codefonc))
0096       != ok)
0097     return Resultat;
0098 
0099   /* emission des parametres */
0100 
0101   if ((Resultat = Emission (NumSocket, (char *) &NumVer, taille_long, p_numver))
0102       != ok)
0103     return Resultat;
0104 
0105   if ((Resultat = Emission (NumSocket, NomTrait, TAILLE_NOM_TRAITEMENT,
0106         p_nomtrait)) != ok)
0107     return Resultat;
0108 
0109   /* fin d'emission */
0110 
0111 #if ((client!=PC) && (client !=MAC))
0112   if ((Resultat = Fin_Emission (NumSocket))
0113       == erreur_fin_emission)
0114     return Resultat;
0115 #endif
0116 
0117   /* reception des parametres */
0118 
0119   if ((Resultat = Reception (NumSocket, (char *) &CR, taille_long, p_cr))
0120       != ok)
0121     return Resultat;
0122 
0123   if (CR == ok)
0124 
0125     if ((Resultat = Reception_DescTrait (NumSocket, DescTrait, p_desctrait))
0126         != ok)
0127       return Resultat;
0128 
0129   /* fin de communication */
0130 
0131   Fin_Communication (NumSocket);
0132 
0133   return CR;
0134 
0135 }
0136 
0137 /*----------------------------------------------------------------------------
0138 
0139             TSDescDiag
0140 
0141   But : fonction demandant au serveur de lui envoyer la description d'un
0142     diagnostic
0143 
0144   Arguments :
0145     NomDiag   : nom du diagnostic
0146     NumVer    : numero de version
0147 
0148     DescDiag  : description du diagnostic
0149 
0150   Retour          : compte-rendu d'execution
0151 
0152 ------------------------------------------------------------------------------*/
0153 
0154 Longint FAR_PASCAL
0155 TSDescDiag ( char *NomDiag,
0156              Longint NumVer,
0157              pS_DescDiag *DescDiag)
0158 
0159 {
0160   Longint CR;
0161   Longint code_param;
0162 
0163 #if (client == MAC)
0164   ConnHandle NumSocket;         /* descripteur de la socket de communication */
0165 #else
0166   int NumSocket;                /* descripteur de la socket de communication */
0167 #endif
0168   short int CodeFonc;           /* code de la fonction TSLib appelee */
0169   Longint Resultat;            /* compte-rendu d'execution du client */
0170 
0171   char buffer[taille_short+TAILLE_NOM_DIAGNOSTIC+taille_long];
0172 
0173   /* test des pointeurs de chaines */
0174 
0175   code_param = ok;
0176 
0177   if (NomDiag == NULL)
0178     code_param = p_nomdiag;
0179   if (code_param != ok)
0180     return (Gestion_Erreur (erreur_chaine_vide, code_param));
0181 
0182 
0183   /* debut de communication */
0184 
0185   if ((Resultat = Debut_Communication (&NumSocket, 1)) != ok)
0186     return Resultat;
0187 
0188   /* emission du code de la fonction */
0189 
0190   if(compress_on)
0191     CodeFonc = fonc_tsdescdiag;
0192   else
0193     CodeFonc = -(fonc_tsdescdiag - MAX_FUNCT_NUMBER);
0194 
0195   memcpy(buffer, (char *)&CodeFonc, taille_short);
0196   memcpy(&buffer[taille_short],(char *) &NumVer, taille_long);
0197   strcpy(&buffer[taille_short+taille_long],NomDiag );
0198 
0199   /* emission */
0200 
0201   if ((Resultat = Emission (NumSocket, buffer,
0202      (taille_short + TAILLE_NOM_DIAGNOSTIC + taille_long) , p_codefonc)) != ok)
0203     return Resultat;
0204 
0205 
0206   /* fin d'emission */
0207 
0208 #if ((client!=PC) && (client !=MAC))
0209   if ((Resultat = Fin_Emission (NumSocket))
0210       == erreur_fin_emission)
0211     return Resultat;
0212 #endif
0213 
0214   /* reception des parametres */
0215 
0216   if ((Resultat = Reception (NumSocket, (char *) &CR, taille_long, p_cr))
0217       != ok)
0218     return Resultat;
0219 
0220   if (CR == ok)
0221 
0222     if ((Resultat = Reception_DescDiag (NumSocket, DescDiag, p_descdiag))
0223         != ok)
0224       return Resultat;
0225 
0226   /* fin de communication */
0227 
0228   Fin_Communication (NumSocket);
0229 
0230   return CR;
0231 
0232 }
0233 
0234 
0235 /*----------------------------------------------------------------------------
0236 
0237             TSDescDon
0238 
0239   But : fonction demandant au serveur de lui envoyer la description d'une
0240     donnee
0241 
0242   Arguments :
0243     NomDon    : nom de la donnee
0244 
0245     DescDon   : description de la donnee
0246 
0247   Retour          : compte-rendu d'execution
0248 
0249 ------------------------------------------------------------------------------*/
0250 
0251 Longint FAR_PASCAL
0252 TSDescDon (char *NomDon,
0253        pS_DescDon *DescDon)
0254 {
0255   Longint CR;
0256   Longint code_param;
0257 #if (client == MAC)
0258   ConnHandle NumSocket;         /* descripteur de la socket de communication */
0259 #else
0260   int NumSocket;                /* descripteur de la socket de communication */
0261 #endif
0262   short int CodeFonc;           /* code de la fonction TSLib appelee         */
0263   Longint Resultat;            /* compte-rendu d'execution du client        */
0264   char buffer[TAILLE_NOM_DONNEE+taille_short];
0265   char *pt_comment;
0266   char *pt_char;
0267 
0268   /* test des pointeurs de chaines */
0269   code_param = ok;
0270 
0271   if (NomDon == NULL)
0272     code_param = p_nomdon;
0273   if (code_param != ok)
0274      return (Gestion_Erreur (erreur_chaine_vide, code_param));
0275 
0276   /* debut de communication */
0277   if ((Resultat = Debut_Communication (&NumSocket, 1)) != ok)
0278     return Resultat;
0279 
0280   if (compress_on)
0281     CodeFonc = fonc_tsdescdon;
0282   else
0283     CodeFonc = -(fonc_tsdescdon - MAX_FUNCT_NUMBER);
0284 
0285   memcpy(buffer, (char *)&CodeFonc, taille_short);
0286   strcpy(&buffer[taille_short], NomDon);
0287 
0288   /* emission du code de la fonction et d'un parametre */
0289 
0290   if ((Resultat = Emission (NumSocket, buffer, 
0291         taille_short+TAILLE_NOM_DONNEE, p_codefonc))
0292       != ok)
0293     return Resultat;
0294 
0295   /* fin d'emission */
0296 
0297 #if ((client!=PC) && (client !=MAC))
0298   if ((Resultat = Fin_Emission (NumSocket))
0299       == erreur_fin_emission)
0300     return Resultat;
0301 #endif
0302 
0303   /* reception des parametres */
0304 
0305   if ((Resultat = Reception (NumSocket, (char *) &CR, taille_long, p_cr))
0306       != ok)
0307     return Resultat;
0308 
0309   if (CR == ok)
0310 
0311     if ((Resultat = Reception_DescDon (NumSocket, DescDon, p_descdon))
0312     != ok)
0313       return Resultat;
0314 
0315   /* fin de communication */
0316 
0317   Fin_Communication (NumSocket);
0318 
0319   return CR;
0320 
0321 }
0322 
0323 /*----------------------------------------------------------------------------
0324 
0325             TSExist
0326 
0327   But : fonction demandant au serveur de verifier l'existence d'une donnee
0328     et de lui envoyer les informations la concernant
0329 
0330   Arguments :
0331     NomDon    : nom de la donnee
0332     Entrees   : liste des entrees du traitement
0333 
0334     NbCoord   : tableau de valeurs des coordonnees ou nombre de mesures
0335     NumVer    : numero de version du createur
0336     Certif    : tableau des certifications
0337     Date      : date d'execution du diagnostic ou du traitement
0338     Heure     : heure  d'execution du diagnostic ou du traitement
0339 
0340   Retour          : compte-rendu d'execution
0341 
0342 ------------------------------------------------------------------------------*/
0343 
0344 
0345 Longint FAR_PASCAL
0346 TSExist (char *NomDon,
0347      pS_Entree Entrees,
0348      Longint *NbCoord,
0349      Longint *NumVer,
0350      Longint *Certif,
0351      char *Date,
0352      char *Heure)
0353 
0354 {
0355   Longint CR;
0356   Longint CoordNb;             /* longueur en octets du tableau NbCoord */
0357   Longint CertifNb;            /* longueur en octets du tableau Certif  */
0358   Longint code_param;
0359   char buffer[TAILLE_NOM_DONNEE+taille_long+taille_short];
0360 
0361 #if (client == MAC)
0362   ConnHandle NumSocket;         /* descripteur de la socket de communication */
0363 #else
0364   int NumSocket;                /* descripteur de la socket de communication */
0365 #endif
0366   short int CodeFonc;           /* code de la fonction TSLib appelee   */
0367   Longint Resultat;            /* compte-rendu d'execution du client  */
0368 
0369   /* test des pointeurs de chaines */
0370 
0371   code_param = ok;
0372 
0373   if (NomDon == NULL)
0374     code_param = p_nomdon;
0375   if (Date == NULL)
0376     code_param = p_date;
0377   if (Heure == NULL)
0378     code_param = p_heure;
0379   if (Entrees->union_var.lval < 0)
0380     code_param = p_numchoc;
0381 
0382    if (code_param != ok)
0383     return (Gestion_Erreur (erreur_chaine_vide, code_param));
0384 
0385   /* test des pointeurs de tableaux */
0386 
0387   if (NbCoord == NULL)
0388     code_param = p_nbcoord;
0389   if (Certif == NULL)
0390     code_param = p_certif;
0391 
0392   if (code_param != ok)
0393     return (Gestion_Erreur (erreur_tableau_vide, code_param));
0394 
0395   if(compress_on)
0396     CodeFonc = fonc_tsexist;
0397   else
0398     CodeFonc = -(fonc_tsexist - MAX_FUNCT_NUMBER);
0399 
0400   /* debut de communication */
0401 
0402   if ((Resultat = Debut_Communication (&NumSocket, 1)) != ok)
0403     return Resultat;
0404 
0405   /* emission du code de la fonction et des parametres */
0406   if ((Resultat = Emission (NumSocket, (char *) &CodeFonc, taille_short, p_codefonc))
0407       != ok)
0408     return Resultat;
0409 
0410   if ((Resultat = Emission (NumSocket, NomDon, TAILLE_NOM_DONNEE, p_nomdon))
0411       != ok)
0412     return Resultat;
0413 
0414   if ((Resultat = Emission_Entrees (NumSocket, Entrees, p_entrees))
0415       != ok)
0416     return Resultat;
0417 
0418 
0419   /* fin d'emission */
0420 
0421 #if ((client!=PC) && (client !=MAC))
0422   if ((Resultat = Fin_Emission (NumSocket))
0423       == erreur_fin_emission)
0424     return Resultat;
0425 #endif
0426 
0427   /* reception des parametres */
0428 
0429   if ((Resultat = Reception (NumSocket, (char *) &CR, taille_long, p_cr))
0430       != ok)
0431     return Resultat;
0432 
0433   if (CR == ok)
0434     {
0435       if ((Resultat = Reception (NumSocket, (char *) &CoordNb, taille_long, p_nbcoord))
0436       != ok)
0437     return Resultat;
0438 
0439       if ((Resultat = Reception (NumSocket, (char *) NbCoord, CoordNb, p_nbcoord))
0440       != ok)
0441     return Resultat;
0442 
0443       if ((Resultat = Reception (NumSocket, (char *) NumVer, taille_long, p_numver))
0444       != ok)
0445     return Resultat;
0446 
0447       if ((Resultat = Reception (NumSocket, (char *) &CertifNb, taille_long, p_certif))
0448       != ok)
0449     return Resultat;
0450         if(CertifNb > 256) {
0451       int i;
0452       Longint *ptmp_certif=(Longint *)calloc(sizeof(Longint),CertifNb);
0453       if ((Resultat = Reception (NumSocket, (char *) ptmp_certif, CertifNb,
0454               p_certif)) != ok)
0455         return Resultat;
0456       for(i=0; i < 64 ; i++) /* Tableau certif Bd =64 max */
0457         Certif[i]= ptmp_certif[i];
0458       }
0459       else
0460            if ((Resultat = Reception (NumSocket, (char *) Certif, CertifNb,
0461              p_certif)) != ok)
0462        return Resultat;
0463 
0464       if ((Resultat = Reception (NumSocket, Date, TAILLE_DATE, p_date))
0465       != ok)
0466     return Resultat;
0467 
0468       if ((Resultat = Reception (NumSocket, Heure, TAILLE_HEURE, p_heure))
0469       != ok)
0470     return Resultat;
0471     }
0472   /* fin de communication */
0473 
0474   Fin_Communication (NumSocket);
0475 
0476   return CR;
0477 
0478 }

Community support and wiki are available on Redmine. Last update: 18-Apr-2019.