Persistent Storage on the Server

You can optimize your application so the server stub does not free memory on the server at the conclusion of a remote procedure call. For example, when a context handle will be manipulated by several remote procedures, you can use the ACF attribute allocate(dont_free) to retain the allocated memory on the server.

The allocate(dont_free) attribute is added to the ACF typedef declaration in the ACF. For example:

/* ACF file fragment */
typedef [allocate(all_nodes, dont_free)] P_TREE_TYPE;
 

When the allocate(dont_free) attribute is specified, the tree data structure is allocated, but not freed, by the server stub. When you make the pointers to such persistent data areas available to other routines — for example, by copying the pointers to global variables — the retained data is accessible to other server functions. The allocate(dont_free) attribute is particularly useful for maintaining persistent pointer structures as part of the server state information associated with a context-handle type.