Um nó de processamento de mensagens é utilizado para processar uma mensagem de alguma maneira e é utilizado um nó de saída para saída de uma mensagem como um fluxo de bits.
Ao codificar um nó de processamento de mensagens ou um nó de saída, os nós fornecem essencialmente os mesmos serviços. Você pode desempenhar o processamento de mensagens em um nó de saída e pode exibir uma mensagem para um fluxo de bits utilizando um nó do processamento de mensagens. Para simplificar, este tópico refere-se principalmente ao nó como um nó de processamento de mensagens, mas também contém informações sobre as funções de dois tipos de nó.
Uma LIL (Biblioteca de Implementação Carregável) é o módulo de implementação para um nó em C. Uma LIL é implementada como uma DLL (Biblioteca de Links Dinâmicos) ou biblioteca compartilhada, mas tem a extensão de arquivo .lil, não .dll.
Para obter informações adicionais sobre as funções de implementação do nó C que você grava para o nó, consulte Funções de Implementação de Nó C. Você pode chamar funções de utilitário do nó C, implementadas no intermediário de tempo de execução, para ajudar na operação do nó; consulte Funções de Utilitários de Nó C.
Para declarar e definir um nó definido pelo usuário para o intermediário, inclua uma função de inicialização, bipGetMessageflowNodeFactory, na LIL. As etapas a seguir devem ser realizadas no encadeamento de configuração, devem esboçar como o intermediário chama sua função de inicialização e como sua função de inicialização declara e define o nó definido pelo usuário:
Os atributos são definidos sempre que se inicia o intermediário, ou quando se reimplementa um fluxo de mensagens com novos valores. Os atributos são definidos pelo intermediário, chamando o código do usuário a partir do encadeamento de configuração. Seu código precisa armazenar esses atributos em sua área de contexto do nó, para utilização no processamento de mensagens posterior.
{ const CciChar* ucsAttr = CciString("nodeTraceSetting", BIP_DEF_COMP_CCSID) ; insAttrTblEntry(p, (CciChar*)ucsAttr, CNI_TYPE_INTEGER); _setAttribute(p, (CciChar*)ucsAttr, (CciChar*)constZero); free((void *)ucsAttr) ; } { const CciChar* ucsAttr = CciString("nodeTraceOutfile", BIP_DEF_COMP_CCSID) ; insAttrTblEntry(p, (CciChar*)ucsAttr, CNI_TYPE_STRING); _setAttribute(p, (CciChar*)ucsAttr, (CciChar*)constSwitchTraceLocation); free((void *)ucsAttr) ; }
Quando o intermediário recupera uma mensagem da fila e essa mensagem chega no terminal de entrada do nó de processamento de mensagens ou de saída definido pelo usuário, o intermediário chama a função de implementação cniEvaluate. Esta função é chamada no encadeamento de processamento de mensagens e deve decidir o que fazer com a mensagem. Essa função pode ser chamada em vários encadeamentos, principalmente, se instâncias adicionais forem utilizadas.
Se um nó for excluído, o intermediário chamará a função cniDeleteNodeContext. Esta função é iniciada no mesmo encadeamento que cniCreateNodeContext. Utilize essa função para liberar os recursos utilizados pelo nó definido pelo usuário. Por exemplo:
void _deleteNodeContext( CciContext* context ){ static char* functionName = (char *)"_deleteNodeContext()"; free ((void*) context); return; }