Un nodo de entrada definido por el usuario escrito con el lenguaje de programación C pasa por diversas etapas durante su tiempo de vida.
Durante la fase de registro, el intermediario detecta qué recursos están disponibles y los LIL que pueden proporcionarlos. En esta instancia, los recursos disponibles son nodos. La fase se inicia cuando se inicia un grupo de ejecución. Los LIL se cargan durante el arranque de un grupo de ejecución y el intermediario los consulta para saber qué recursos puede proporcionar.
Se crea una estructura CciFactory durante la fase de registro, cuando el nodo definido por el usuario llama a cniCreateNodeFactory.
Se crea una instancia de un nodo de entrada definido por el usuario cuando el mandato mqsistart inicia o reinicia el proceso del grupo de ejecución, o cuando se despliega un flujo de mensajes asociado al nodo.
El nodo de entrada definido por el usuario sólo tiene terminales de entrada si también está actuando como nodo de proceso de mensajes. Si éste es el caso, generalmente lo mejor es utilizar un nodo de proceso de mensajes independiente definido por el usuario para realizar el proceso de mensajes, en lugar de combinar ambas operaciones en un solo nodo más complejo.
Durante esta fase, se crea una estructura CciTerminal cuando se llama a cniCreateTerminal.
La fase de proceso comienza cuando el intermediario llama a la función cniRun. El intermediario utiliza la funcióncniRun para determinar cómo procesar un mensaje, incluido determinar el dominio en el que se define un mensaje, y cómo invocar el analizador correspondiente para dicho dominio.
Se solicita una hebra de la agrupación del flujo de mensajes y se inicia en el método de ejecución del nodo de entrada. La hebra conecta con el gestor de colas del intermediario y retiene esta conexión durante su ciclo de vida. Cuando se asigna una hebra, el nodo entra en un bucle de proceso de mensajes mientras espera a recibir un mensaje. Permanece en el bucle hasta que se recibe un mensaje. Si se configura el flujo de mensajes para que utilice varias hebras, se activa el despacho de hebras.
Ahora los datos de mensajes se pueden propagar en sentido descendente.
Un nodo de entrada definido por el usuario se destruye cuando se vuelve a desplegar el flujo de mensajes o cuando se utiliza el mandato mqsistop para detener el proceso de grupo de ejecución. Puede destruir el nodo implementando la función cniDeleteNodeContext.
Cuando se destruye un nodo de entrada definido por el usuario de uno de estos modos, debe liberar la memoria que utilice el nodo y liberar también los recursos que estén retenidos, por ejemplo, los sockets.