cniCreateNodeContext

Esta función crea cualquier contexto para una instancia de un objeto de nodo. La invoca el intermediario de mensajes siempre que se construye una instancia de un objeto de nodo. Los nodos se construyen cuando el intermediario difunde un flujo de mensajes, o cuando se inicia el grupo de ejecución.

Las responsabilidades del nodo llegado este punto son las siguientes:
  1. (Opcional) Verificar que la fábrica da soporte al nombre del nodo especificado en el parámetro nodeName.
  2. Asignar áreas de datos específicas de instancias de nodo que puedan ser necesarias (por ejemplo: contexto, datos de atributo y terminales).
  3. Realizar la adquisición o inicialización adicional de recursos que pueda ser necesaria para el proceso del nodo.
  4. Devolver la dirección del contexto a la función de llamada. Siempre que se invoca una función de implementación para esta instancia de nodo, se pasa el contexto apropiado, como un argumento, a esa función. Esto significa que un nodo definido por el usuario y desarrollado en C no necesita mantener sus propios punteros estáticos por área de datos de instancia.
Definida en Tipo Miembro
CNI_VFT Obligatoria iFpCreateNodeContext

Sintaxis

CciContext* cniCreateNodeContext(
  CciFactory*  factoryObject,
  CciChar*     nodeName,
  CciNode*     nodeObject);

Parámetros

factoryObject
Dirección del objeto de fábrica que posee el nodo que se va a crear (entrada).
nodeName
Nombre del nodo que se va a crear (entrada).
nodeObject
Dirección del objeto de nodo que se acaba de crear (entrada).

Valores de retorno

Si la función se ejecuta correctamente, se devuelve la dirección del contexto de nodo. De lo contrario, se devuelve el valor cero (CCI_NULL_ADDR).

Ejemplo

  static char* functionName = (char *)"_Switch_createNodeContext()";
  NODE_CONTEXT_ST* p;

  /* Asignar un puntero al contexto local */
  p = (NODE_CONTEXT_ST *)malloc(sizeof(NODE_CONTEXT_ST));

  if (p) {

    /* Borrar el área de contexto */
    memset(p, 0, sizeof(NODE_CONTEXT_ST));

    /* Guardar nuestro puntero de objeto de nodo en nuestro contexto */
    p->nodeObject = nodeObject;

    /* Guardar nuestro nombre de nodo */
    CciCharNCpy((CciChar*) &p->nodeName, nodeName, MAX_NODE_NAME_LEN);
}
  else
	 /* Manejar errores */

Conceptos relacionados
Nodos de entrada definidos por el usuario
Nodos de proceso de mensajes definidos por el usuario
Nodos de salida definidos por el usuario

Tareas relacionadas
Creación de un nodo de entrada en C
Creación de un nodo de proceso de mensajes en C

Referencia relacionada
Funciones de implementación de nodo de lenguaje C
cniDeleteNodeContext