cniRun

Questa funzione dichiara il nodo come un nodo di input. Non viene utilizzata dall'elaborazione dei messaggi o dai nodi di output e non è necessario richiamare cniEvaluate. WebSphere Message Broker assegna un thread e richiama questa funzione su tale thread.

Definito in Tipo Membro
CNI_VFT Condizionale iFpRun

Sintassi

int cniRun(
  CCiContext*  context,
  CCiMessage*  destinationList,
  CciMessage*  exceptionList,
  CciMessage* message
);

Parametri

context
L'indirizzo del contesto per l'istanza del nodo, come creato dal nodo e restituito dalla funzione cniCreateNodeContext (input).
destinationList
L'indirizzo dell'oggetto elenco di destinazioni di input (input).
exceptionList
L'indirizzo dell'elenco di eccezioni per il messaggio (input).
message
L'indirizzo dell'oggetto messaggio a cui sono collegati i dati (input).

Il nodo definito dall'utente può associare un flusso di bit al messaggio richiamando cniSetInputBuffer. Non essendo previsto il riempimento della struttura ad albero con i dati, se vengono richiamate le funzioni cniAddAsLastChild o cniCreateElementAsLastChildFromBitstream ciò risulterà inutile. Per creare parti della struttura ad albero anziché fornire un buffer di cui eseguire l'analisi come all'intero messaggio, è necessario creare un nuovo messaggio mediante cniCreateMessage.

Ad esempio, se si dispone di un flusso di bit che deve essere utilizzato come parte payload del messaggio ed inoltre si desidera aggiungere un'intestazione, è necessario completare i passi riportati di seguito:
  1. Creare un nuovo messaggio mediante cniCreateMessage.
  2. Creare la parte intestazione in questo nuovo messaggio utilizzando le funzioni di utilità relative all'accesso all'elemento di sintassi, ad esempio cniCreateElementAsLastChildUsingParser, e trasferendo l'elemento root a questo nuovo messaggio.
  3. Aggiungere i campi all'intestazione utilizzando funzioni come cniCreateElementAsLastChild.
  4. Creare il contenuto del messaggio analizzando il flusso di bit mediante il richiamo di cniCreateElementAsLastChildFromBitstream e passando l'elemento root a questo nuovo messaggio.

Valori di restituzione

Questa funzione viene richiamata dal broker come parte di un loop. La spiegazione del valore di restituzione è come riportato di seguito.

CCI_TIMEOUT
Il nodo di input non ha ricevuto i relativi dati di input e richiede che venga restituito il controllo a WebSphere Message Broker nel caso sia stata richiesta la riconfigurazione del flusso di messaggi. Un nodo di input definito dall'utente deve essere restituito di frequente per ridare il controllo a WebSphere Message Broker.
CCI_SUCCESS_CONTINUE
Un messaggio è stato elaborato con esito positivo. WebSphere Message Broker esegue l'elaborazione del commit della transazione predefinita. Viene richiamata immediatamente la funzione di implementazione cniRun del nodo di input in modo che il nodo può continuare l'elaborazione.
CCI_SUCCESS_RETURN
Un messaggio è stato elaborato con esito positivo. WebSphere Message Broker esegue l'elaborazione del commit della transazione predefinita. Il nodo di input ha determinato che il thread non è richiesto e viene restituito al pool di thread del flusso di messaggi. Se ciò viene eseguito sull'unico thread, o sull'ultimo thread attivo, WebSphere Message Broker impedisce la restituzione dell'ultimo thread al pool; altrimenti, non ci saranno altri thread attivi che possono inviare un altro thread. In tale situazione, WebSphere Message Broker richiama subito la funzione di implementazione cniRun, come se fosse restituito CCI_SUCCESS_CONTINUE.
CCI_FAILURE_CONTINUE
E' stato rilevato un errore nell'elaborazione di un messaggio e il nodo richiede che venga eseguita l'elaborazione del rollback di una transazione. Viene richiamata immediatamente la funzione di implementazione cniRun del nodo di input.
CCI_FAILURE_RETURN
E' stato rilevato un errore nell'elaborazione di un messaggio e il nodo richiede che venga eseguita l'elaborazione del rollback di una transazione. Tuttavia, il nodo di input ha determinato che il thread non è richiesto e questo può essere restituito al pool di thread del flusso di messaggi. Se ciò viene eseguito sull'ultimo thread attivo, WebSphere Message Broker ne impedisce la restituzione al pool; altrimenti, non ci saranno altri thread attivi che possono inviare un altro thread. In tale situazione WebSphere Message Broker richiama subito la funzione di implementazione cniRun, come se fosse restituito CCI_FAILURE_CONTINUE.
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
as07480_