| |
1-36 C-Sprache, die August 1997 Abbildet 1 CORBA::BAD_PARAM Standardausnahme wird über angehoben CORBA_Environment Parameter. Dieses trifft auch auf Schnittstelle-spezifische initfunktionen zu, die beschrieben werden unter. Die finifunktion säubert nur herauf ORB-spezifische private Daten. Es ist die Rückstellung Vollendungfunktion für Bedienstete. Sie bildet keine Annahmen ungefähr wo Bediensteter wird, wie Annehmen zugeteilt, daß der Bedienstete Haufen-zugeteilt versuchend ist und zu Anruf CORBA_free() auf ihm. Anwendungen werden die finifunktion für überlaufen gelassen ein gegebener Bediensteter durch die Initialisierung des PortableServer_ServantBase__epv beenden Sie Zeiger mit einem Zeiger zu einer Vollendungfunktion, die spezifisch für die gebildet wird Bediensteter; jedoch muß irgend solche überlaufende Funktion die immer sichergehen PortableServer_ServantBase_fini() Funktion wird für diesen Bediensteten wie hervorgerufen Teil seiner Implementierung. Die Resultate einer Vollendungfunktion, die hervorrufen nicht kann PortableServer_ServantBase_fini() seien Sie Implementierung-spezifisch, aber können Sie umfassen Sie Gedächtnisleckstellen oder -störungen, die abbrechen konnten die Anwendung. Wenn ein Bediensteter zu einem fini überschritt Funktion hat ein UNGÜLTIGES epvmitglied, oder wenn PortableServer_Servant Argument selbst ist NULL, keine Vollendung des Bediensteten wird und das CORBA::BAD_PARAM durchgeführt Standardausnahme wird über angehoben CORBA_Environment Parameter. Dieses trifft auch auf Schnittstelle-spezifisches fini zu Funktionen, die unten beschrieben sind. Normalerweise das PortableServer_ServantBase__init und PortableServer_ServantBase__fini Funktionen werden nicht direkt vorbei hervorgerufen Anwendungen, aber eher durch Schnittstelle-spezifische Initialisierungs- und Vollendungfunktionen erzeugt durch einen IDL-Compiler. Z.B. das init und fini Funktionen erzeugten für den Kostenzähler Skelett werden definiert, wie folgt: /*c*/ leeres POA_Counter__init(POA_Counter * Bediensteter, CORBA_Environment * env) { /* * Schnittstelleninitfunktionen des ersten Anrufs sofortige niedrige * im von links nach rechts verlaufenden Auftrag der Erbschaft */ PortableServer_ServantBase__init( (PortableServer_ServantBase*)servant, env ); /* führen Sie jetzt Initialisierungs* POA_Counter durch,/ ... } leeres POA_Counter__fini(POA_Counter * Bediensteter, CORBA_Environment * env) { /* führen Sie zuerst Reinigung* POA_Counter durch,/ ... /* * benennen Sie dann sofortige niedrige Schnittstellenfinifunktionen |  |
|
| |
|
|