Processus d’allocation des ressources du distributeur de ressources
Chaque fois qu’un distributeur de ressources alloue une ressource de son détenteur, voici ce qui se produit :
Le distributeur de ressources déclare un identificateur de type de ressource (RESTYPID), qui décrit le type de ressource requis.
Le distributeur de ressources appelle la méthode IHolder :: AllocResource du détenteur, en passant ce RESTYPID.
Le détenteur génère une liste de candidats à partir des ressources disponibles. Les candidats sont des ressources qui ne sont pas inscrites dans une transaction ou déjà inscrites dans la transaction de l’objet appelant.
Ces candidats sont passés individuellement à la méthode IDispenserDriver :: RateResource , où ils sont évalués (sur une échelle de 0 à 100) en fonction de la correspondance entre la ressource candidate et le RESTYPID souhaité.
Le détenteur choisit la ressource dont le distributeur de ressources est le plus élevé.
Le distributeur de ressources peut mettre fin à la boucle d’évaluation dès le début en affectant au candidat une évaluation de la ressource 100 (un ajustement parfait). Une évaluation de 100 serait normalement réservée pour les ressources candidates qui sont déjà inscrites, sauf si le distributeur de ressources conclut que l’inscription est une opération peu coûteuse. Si toutes les ressources candidates (le cas échéant) sont évaluées à 0 (inutilisables), une nouvelle ressource est créée en appelant IDispenserDriver :: CreateResource.
Si la ressource choisie précédemment n’est pas déjà inscrite dans la transaction de l’objet appelant, la méthode IDispenserDriver :: EnlistResource du distributeur de ressources est appelée.
L’appel de la méthode AllocResource retourne au distributeur de ressources avec la ressource inscrite.