Exemples d'appels de méthode Get et Put
Voici des exemples de la séquence d'appels qui se produisent pour Get ou Put dans une mappe.
Elle illustre le partage de connexions, à la fois actives (la connexion est déjà utilisée dans la mappe en cours) et inactives (la connexion n'est pas utilisée par une mappe en cours).
Séquence d'appels
- La mappe appelle ValidateProperties.
- La mappe détermine si une connexion active existe.
Pour les connexions inactives
- La mappe appelle CompareConnections.
- La mappe détermine s'il existe une correspondance.
- S'il existe une correspondance, la mappe appelle :
- BeginTransaction
- OnNotify(Start)
- S'il n'y a pas de correspondance, la mappe appelle :
- Connect
- BeginTransaction
- OnNotify(Start)
- La mappe appelle alors Get ou Put pour chaque message disponible à traiter.
Pour les connexions actives
- La mappe appelle CompareConnections.
- La mappe détermine s'il existe une correspondance.
- S'il existe une correspondance, la mappe appelle :
- OnNotify(Start)
- S'il n'y a pas de correspondance, la mappe appelle :
- Connect
- BeginTransaction
- OnNotify(Start)
- La mappe appelle alors Get ou Put pour chaque message disponible à traiter.
Aucun autre message à traiter
- S'il n'y a plus de messages à traiter, la mappe appelle :
- OnNotify(Stop)
- EndTransaction
- Disconnect
L'appel Disconnect n'est pas effectué immédiatement après EndTransaction, mais seulement une fois le processus terminé ou lorsque le délai d'expiration de la connexion est atteint. La description montre le scénario dans lequel le paramètre de portée est défini sur Mappe. Même s'il existe plusieurs rafales, il n'y a qu'un seul appel à BeginTransaction et un seul à EndTransaction. Si le paramètre de portée a plutôt pour valeur Burst, BeginTransaction est appelé au début de chaque rafale, et EndTransaction à la fin de la rafale. Ce scénario pour les adaptateurs consiste à n'autoriser qu'une seule transaction par connexion. Pour qu’un adaptateur autorise plusieurs transactions sur une même connexion, l’appel BeginTransaction est effectué même si l’appel CompareConnection renvoie MPI_CMP_EQUAL.