Gestión de almacenamiento

Este tema trata de cuestiones relacionadas con la gestión de almacenamiento que deben tenerse en cuenta al desarrollar extensiones definidas por el usuario para WebSphere Business Integration Message Broker en el lenguaje de programación C. Si va a desarrollar extensiones definidas por el usuario utilizando el lenguaje de programación Java, puede utilizar métodos de gestión de almacenamiento Java estándar.

Una extensión definida por el usuario que haya asignado memoria, deberá también liberarla. La creación de un nodo durante la ejecución da lugar a que se invoque la función cniCreateNodeContext, que permite a la extensión definida por el usuario asignar áreas de datos específicas de instancias de nodo para almacenar un contexto. La dirección del contexto se devuelve al intermediario de mensajes y vuelve a pasarse desde el intermediario cuando un método interno hace que se invoque una función de extensión definida por el usuario; de este modo, la extensión C definida por el usuario puede ubicar y utilizar el contexto correcto para el proceso de la función.

El intermediario de mensajes pasará direcciones de objetos C++ a la extensión definida por el usuario. Estas direcciones están concebidas, simplemente, para utilizarse como un manejador que debe volver a pasarse en llamadas de función posteriores. No debe permitir que la extensión C definida por el usuario intente manipular ni utilizar este puntero de ningún modo al intentar liberar almacenamiento utilizando la función free, por ejemplo. Tales acciones ocasionarán un comportamiento imprevisible en el intermediario de mensajes.

La función de implementación cniCreateNodeContext se invoca siempre que el objeto de nodo subyacente se ha creado internamente. Esto ocurre cuando un intermediario se define con un flujo de mensajes que utiliza un nodo definido por el usuario. Es importante tener en cuenta que esta actividad no es necesariamente la misma que crear (o reutilizar) una hebra para ejecutar una instancia de flujo de mensajes que contenga el nodo. De hecho, se invocará la función cniCreateNodeContext sólo una vez, durante la configuración del flujo de mensajes, independientemente del número de hebras que estén ejecutando el flujo de mensajes.

Las mismas consideraciones se aplican a los analizadores definidos por el usuario, y a la función de implementación cpiCreateContext correspondiente.

Conceptos relacionados
Analizadores definidos por el usuario
Extensiones definidas por el usuario

Referencia relacionada
cniCreateNodeContext
cpiCreateContext