Méthode d'interface CompareConnection
La méthode CompareConnection est appelée par le Gestionnaire de ressources pour déterminer si une connexion peut être réutilisée.
- Pour déterminer si plusieurs références d'adaptateur dans la même mappe peuvent partager une connexion.
- Pour déterminer si une connexion actuellement inactive peut être utilisée par une mappe.
MPIRC CompareConnection (HMPIADAPT hAdapter, HMPICONNECT hConnection,
MPICOMP *peComp)Entrées
- hAdapter
- Descripteur d'adaptateur pour la connexion potentiellement nouvelle.
- hConnection
- Descripteur de connexion pour la connexion existante.
Sorties
- peComp
- MPI_CMP_EQUAL
- La connexion correspond.
- MPI_CMP_DIFFER
- La connexion ne correspond pas.
- MPI_CMP_LESS
- La connexion est inférieure à l'adaptateur.
- MPI_CMP_GREATER
- La connexion est supérieure à l'adaptateur.
Renvoie
Statut de réussite
L'adaptateur consulte les propriétés de l'objet d'adaptateur et de l'objet de connexion et détermine si les propriétés correspondent de telle sorte que la connexion peut être réutilisée pour l'objet d'adaptateur. La propriété MPIP_CONNECTION_INUSE détermine si l'objet de connexion est actuellement utilisé dans une mappe. Si cette propriété est définie sur FALSE, la connexion est actuellement inactive.
Outre les propriétés spécifiques à l'adaptateur, d'autres propriétés peuvent être importantes pour déterminer si une connexion peut être réutilisée. Par exemple, MPIP_ADAPTER_ON_FAILURE détermine s'il faut invalider ou valider à la fin de la transaction. Si cette valeur est MPI_ACTION_COMMIT pour un objet d'adaptateur, mais MPI_ACTION_ROLLBACK pour un autre, il est très peu probable que la connexion doive être partagée si elle est active.
Si l'ordre des comparaisons peut être défini, le nombre de comparaisons peut être réduit, car chaque connexion existante n'a pas besoin d'être comparée lors de la recherche d'une connexion valide à utiliser.
mpiPropertyGetText(hAdapter, MYPROP_Q_MGR, 0, &pAdaptQMgr, &iLen);
mpiPropertyGetText(hConnection, MYPROP_Q_MGR, 0, &pConnQMgr, &iLen);
rc = strcmp(pAdaptQMgr, pConnQMgr);
if (rc == 0)
return MPI_CMP_EQUAL;
else if (rc < 0)
return MPI_CMP_LESS;
else
return MPI_CMP_GREATER;