/***************************************************************/
Type CanalMicrosoftNetwork Implemente Public : ICanal Defaut Final TailleSegment 4 ConserverObjets
/* Objet : ICanal Msn 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.                                           */
/*-------------------------------------------------------------*/
	
	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 CanalMicrosoftNetwork possède un constructeur explicite. Le paramètre URICanal est l'Uniform Resource Identifier du canal. Il est de la forme UpsMsn://${NomServeur}:${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 CanalMicrosoftNetwork;
	L : Caractere;
Principal
/*******/
Debut
C=CanalMicrosoftNetwork("UpsMsn://MonServeur/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 CanalMicrosoftNetwork;
	L : Caractere;
Principal
/*******/
Debut
C=CanalMicrosoftNetwork("UpsMsn://MonClient/MonTuyau");
/* On établit une session avec le serveur. */
C.ConnecterAUnServeur("UpsMsn://MonServeur/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
| - | - | - | - | - | - | - | - | - |