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