cpiCreateParserFactory

Scopo

Crea una singola istanza del produttore del programma di analisi specificato nel broker di messaggi. Deve essere richiamata solo nella funzione di inizializzazione bipGetParserFactory che viene richiamata quando il broker di messaggi carica la LIL. Se cpiCreateParserFactory viene richiamata in un altro momento, i risultati sono imprevedibili.

Sintassi

CciFactory* cpiCreateParserFactory(
  int*      returnCode,
  CciChar*  name);

Parametri

returnCode
Riceve il codice di ritorno dalla funzione (output).
I codici di ritorno possibili sono:
  • CCI_SUCCESS
  • CCI_EXCEPTION
  • CCI_FAILURE
  • CCI_INV_FACTORY_NAME
  • CCI_INV_OBJECT_NAME
name
Specifica il nome del produttore creato (input).

Valori di restituzione

Se ha esito positivo, viene restituito l'indirizzo dell'oggetto produttore del programma di analisi. Altrimenti, viene restituito un valore zero (CCI_NULL_ADDR) e il parametro returnCode indica il motivo dell'errore.

Esempio

Questo esempio è estratto dal file del programma di analisi di esempio BipSampPluginParser.c (da riga 862 a 901):

void LilFactoryExportPrefix * LilFactoryExportSuffix bipGetParserFactory()
{
  /* Dichiara le variabili */
  CciFactory*     factoryObject;
  int rc;
  static CPI_VFT  vftable = {CPI_VFT_DEFAULT};

  /* Prima di procedere è necessario inizializzare tutte le costanti statiche */
  /* che il plug-in potrebbe utilizzare.                                 */
  initParserConstants();

  /* Imposta tabella funzioni con puntatori sulle funzioni di implementazione del programma di analisi */
  vftable.iFpCreateContext            = cpiCreateContext;
  vftable.iFpParseBufferEncoded       = cpiParseBufferEncoded;
  vftable.iFpParseFirstChild          = cpiParseFirstChild;
  vftable.iFpParseLastChild           = cpiParseLastChild;
  vftable.iFpParsePreviousSibling     = cpiParsePreviousSibling;
  vftable.iFpParseNextSibling         = cpiParseNextSibling;
  vftable.iFpWriteBufferEncoded       = cpiWriteBufferEncoded;
  vftable.iFpDeleteContext            = cpiDeleteContext;
  vftable.iFpSetElementValue          = cpiSetElementValue;
  vftable.iFpElementValue             = cpiElementValue;
  vftable.iFpNextParserClassName      = cpiNextParserClassName;
  vftable.iFpSetNextParserClassName   = cpiSetNextParserClassName;
  vftable.iFpNextParserEncoding       = cpiNextParserEncoding;
  vftable.iFpNextParserCodedCharSetId = cpiNextParserCodedCharSetId;

  /* Crea il produttore del programma di analisi per questo plugin */
  factoryObject = cpiCreateParserFactory(&rc, constParserFactory);
  if (factoryObject) {
    /* Definisce le classi di messaggi previste dal produttore */
    cpiDefineParserClass(&rc, factoryObject, constPXML, &vftable);
  }
  else {
    /* Errore: Impossibile creare il produttore del programma di analisi */
  }

  /* Restituisce l'indirizzo di questo oggetto produttore al broker */
  return(factoryObject);
}
Concetti correlati
Programmi di analisi definiti dall'utente
Estensioni definite dall'utente
Attività correlate
Creazione di un programma di analisi in C
Riferimenti correlati
cpiDefineParserClass
Funzioni di utilità del programma di analisi in C
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
as08240_