Stockage persistant sur le serveur
Vous pouvez optimiser votre application afin que le stub serveur ne libère pas la mémoire sur le serveur à la fin d’un appel de procédure distante. Par exemple, lorsqu’un descripteur de contexte est manipulé par plusieurs procédures distantes, vous pouvez utiliser l’attribut ACF [ allocate (ne pas _ libérer) ] pour conserver la mémoire allouée sur le serveur.
L’attribut [ allocate (ne pas _ libérer) ] est ajouté à la déclaration de typedef ACF dans le CCP. Par exemple :
/* ACF file fragment */
typedef [allocate(all_nodes, dont_free)] P_TREE_TYPE;
Lorsque l’attribut [ allocate (ne pas _ libérer) ] est spécifié, la structure des données de l’arborescence est allouée, mais pas libérée, par le stub serveur. Lorsque vous rendez les pointeurs vers des zones de données persistantes disponibles pour d’autres routines, par exemple en copiant les pointeurs vers des variables globales, les données conservées sont accessibles aux autres fonctions serveur. L’attribut [ allocate (ne pas _ libérer) ] est particulièrement utile pour gérer les structures de pointeur persistantes dans le cadre des informations d’État du serveur associées à un type de handle de contexte.