/***************************************************************/
Type CanalTuyauNomme Implemente Public : ICanal Defaut Final TailleSegment 4 ConserverObjets
/* Objet : ICanal Named Pipe pour communiquer entre deux taches. */
/***************************************************************/
/*-------------------------------------------------------------*/
/* Heritage des proprietes d'Objet. */
/*-------------------------------------------------------------*/
Prive :
EstInstanceDe : Type Lecture Public;
/*-------------------------------------------------------------*/
/* Heritage des propriétés de IFlux. */
/*-------------------------------------------------------------*/
Prive :
ModeOuverture : ModeOuvertureFlux Lecture Public Trace;
NomFlux : Caractere Lecture Public Trace;
FinDeFlux : Booleen Lecture Public;
ModeOptimisation : ModeOptimisationFlux Lecture Public;
EstMultiplexe : Booleen Lecture Public;
/*-------------------------------------------------------------*/
/* Heritage des methodes d'Objet. */
/*-------------------------------------------------------------*/
Public :
Fonction Optimiser(Invariant) Identique(O : Nul Ou Objet) Retourner Nul Ou Booleen;
Procedure Convertir(O : Nul Ou Objet);
Fonction Optimiser(Invariant) CreeParLeServeur() Retourner Entier;
Fonction Optimiser(Invariant) CreeParLeProcessus() Retourner Entier;
Fonction Optimiser(Invariant) CreeDansLEntrepot() Retourner Entrepot;
Fonction Cloner(EntrepotCible : Nul Ou Entrepot=Nul, Profondeur : ModeClonage = ClonageObjetSeul) Retourner Nul Ou Objet;
Fonction LirePropriete(NomPropriete : Caractere) Retourner Nul Ou Objet;
Procedure EcrirePropriete(NomPropriete : Caractere, Valeur : Nul Ou Objet);
Fonction IncrementerDecrementerPropriete(NomPropriete : Nul Ou Caractere, Incrementer : Booleen, Prefixe : Booleen) Retourner Nul Ou Objet;
Procedure SupprimerPropriete(NomPropriete : Caractere);
Fonction Optimiser(Invariant) EnumererProprietes(NumeroPropriete : Entier, TypePropriete : Nul Ou Type=? Sortie, PeutEtreNul : Booleen=? Sortie, Aide : Nul Ou Caractere=? Sortie, NomEnumere : Nul Ou Caractere=? Sortie) Retourner Nul Ou Caractere;
Fonction Optimiser(Invariant) Adresse() Retourner Nul Ou Caractere;
Prive :
Fonction Exporter(E : Nul Ou IEchangeElementaire) Retourner Boolean;
Fonction Importer(E : Nul Ou IEchangeElementaire, EntrepotCible : Nul Ou Entrepot=Nul, EstFiltre : Booleen=Faux, V : Entier=0, R : Entier=0, C : Entier=0) Retourner Nul Ou Objet;
/*-------------------------------------------------------------*/
/* Heritage des methodes de IFlux. */
/*-------------------------------------------------------------*/
Public :
Constructeur Habilitation ();
Procedure Lire(B : Booleen Sortie);
Fonction Lire(B : Binaire Sortie, Nombre : Nul Ou Entier) Retourner Nul Ou Entier;
Fonction Lire(C : Caractere Sortie, Nombre : Nul Ou Entier) Retourner Nul Ou Entier;
Procedure Lire(E : Entier Sortie);
Procedure Lire(R : Reel Sortie);
Fonction LireUneLigne(C: Caractere Sortie) Retourner Nul Ou Entier;
Fonction LireUnMot(C : Caractere Sortie) Retourner Nul Ou Entier;
Procedure Ecrire(B : Nul Ou Booleen);
Procedure Ecrire(C : Nul Ou Binaire);
Procedure Ecrire(C : Nul Ou Caractere);
Procedure Ecrire(E : Nul Ou Entier);
Procedure Ecrire(R : Nul Ou Reel);
Procedure Fermer();
Fonction Optimiser(Invariant) LirePageDeCode() Retourner PagesDeCodesSupportees;
Procedure ChangerPageDeCode(P : PagesDeCodesSupportees);
Fonction LirePosition() Retourner Entier;
Procedure FixerPosition(Position : Entier, PositionReference : PositionFlux=PositionFluxDebut);
Procedure Vider();
Procedure Tronquer();
/*-------------------------------------------------------------*/
/* Heritage des methodes de ICanal. */
/*-------------------------------------------------------------*/
Public :
Fonction Optimiser(Invariant) Protocole() Retourner Caractere;
Fonction Optimiser(Invariant) URICanal(ProtocoleDuClient : Booleen) Retourner Caractere;
/*-------------------------------------------------------------*/
/* Methodes propres. */
/*-------------------------------------------------------------*/
Public :
Constructeur Habilitation(URICanal : Caractere, ModeOuverture:ModeOuvertureFlux=AsynchroneSysteme);
Procedure ServirDesClients();
Procedure AccepterUnClient();
Fonction TenterDAccepterUnClient() Retourner Booleen;
Procedure ConnecterAUnServeur(URIServeur : Caractere);
Prive :
Destructeur(MettreEnAnteMemoire : Booleen) Retourner Booleen;
Fin Type
Le type CanalTuyauNomme possède un constructeur explicite. Le paramètre URICanal est l'Uniform Resource Identifier du canal. Il est de la forme UpsNap://local:${Port}/${NomTuyau}
.
Le paramètre ModeOptimisation permet de spécifier le mode d'optimisation via une éventuelle anté-mémoire en octets pour faire des accès par bloc.
Si une erreur survient lors de la création du canal, l'exception CreationCanalImpossible est envoyée.
Source Composant "Exemple de serveur" Version 1.0.0;
Variable
/******/
C : Nul Ou CanalTuyauNomme;
L : Caractere;
Principal
/*******/
Debut
C=CanalTuyauNomme("UpsNap://local/MonTuyau");
C=ServirDesClients();
TantQue Vrai Faire
Si C.TenterDAccepterUnClient() Alors
/* Il y a un nouveau client. */
Fin TantQue
?=C.LireUneLigne(L,256);
Fin Si
C.Ecrire(L.Majuscule());
C.Fermer();
Attendre(10);
Fin Principal
Source Composant "Exemple de client" Version 1.0.0;
Variable
/******/
C : Nul Ou CanalTuyauNomme;
L : Caractere;
Principal
/*******/
Debut
C=CanalTuyauNomme("UpsNap://local/MonTuyau");
/* On établit une session avec le serveur. */
C.ConnecterAUnServeur("UpsNap://local/MonTuyau");
C.Ecrire("bonjour le monde");
/* On attend la réponse. */
?=C.LireUneLigne(L, 256):
C.Fermer();
/* On écrit la réponse. */
Ecran.Ecrire(L);
Fin Principal
- | - | - | - | - | - | - | - | - |