| |
September 2002 PL/I, das Spezifikation Abbildet: Bewegliches GegenstandcAdaptercDiagramm 2-29 2 ; POS_SERVANTBASE_FINI(PTR BYADDR),/* Bedienstet*/ // PortableServer::ServantBase finalizer Diese Verfahren werden genannt, indem man _ INIT hinzufügt und _ FINI zum Namen von Bediensteter, beziehungsweise. Das Argument zum initverfahren ist ein gültiges pos_servant wer pepv Mitglied ist bereits zum Punkt zu einer PEPV-Struktur initialisiert worden. Die Initialisierung Verfahren, POS_SERVANTBASE_INIT führt ORB-spezifische Initialisierung von durch das pos_servantbase und initialisiert beenden structmitglied von spitz- zum pos_servantbase_epv zum Punkt zum POS_SERVANTBASE_FINI Verfahren wenn beenden Mitglied ist UNGÜLTIG. Wenn beenden Mitglied ist nicht NULL, es wird vorausgesetzt, daß es bereits richtig durch die Anwendung initialisiert worden ist, und wird folglich nicht geändert. Ähnlich wenn das DEFAULT_POA Mitglied von pos_servantbase_epv Struktur ist NULL wenn POS_SERVANTBASE_INIT Verfahren wird, sein Wert wird eingestellt, um auf das DEFAULT_POA zu zeigen benannt Verfahren, das bringt einen Gegenstandhinweis auf der Wurzel POA zurück. Wenn ein Bediensteter auf durch das pos_servant zeigte überschritten zu einem Initialisierungsverfahren hat ein UNGÜLTIGES pepv Mitglied oder wenn das pos_servant Argument selbst ist NULL, Nr. Initialisierung des Bediensteten wird und das CORBA::BAD_PARAM durchgeführt Standard Ausnahme wird geworfen. Dieses trifft auch auf Schnittstelle-spezifische Initialisierungsverfahren zu, welche unten beschrieben sind. Die Vollendungverfahren säubert nur herauf ORB-spezifisches private Daten. Es ist das Rückstellungsvollendungverfahren für Bedienstete. Es bildet nicht irgendwelche Annahmen ungefähr, wo der Bedienstete zugeteilt wird, wie Annehmen, daß der Bedienstete ist Haufen-zugeteilt und versuchend, MEMFREE zu benennen auf ihm. Anwendungen werden zu erlaubt "laufen Sie" beenden über Verfahren für einen gegebenen Bediensteten durch die Initialisierung pos_servantbase_epv beenden Zeiger mit einem Zeiger zu einer Vollendung Verfahren spezifisch gebildet für diesen Bediensteten; jedoch irgend solches überlaufendes Verfahren Muß stellt dem das POS_SERVANTBASE_FINI immer sicher Verfahren wird für das hervorgerufen Bediensteter als Teil seiner Implementierung. Die Resultate eines Vollendungverfahrens, das zu ausfällt rufen Sie POS_SERVANTBASE_FINI hervor seien Sie Implementierung-spezifisch, aber kann umfassen Gedächtnisleckstellen oder -störungen, die abbrechen konnten die Anwendung. Wenn ein Bediensteter, der zu einem Vollendungverfahren geführt wird, ein UNGÜLTIGES EPV hat Mitglied oder wenn pos_servant Argument selbst ist NULL, keine Vollendung des Bediensteten wird durchgeführt, und das CORBA::BAD_PARAM Standardausnahme wird angehoben. Dieses trifft auch auf zu Schnittstelle-spezifische Vollendungverfahren, die unten beschrieben sind. Normalerweise das POS_SERVANTBASE_INIT und POS_SERVANTBASE_FINI Verfahren werden nicht direkt durch Anwendungen, aber eher durch Schnittstelle-spezifisches hervorgerufen Initialisierungs- und Vollendungverfahren erzeugt durch einen IDL-Compiler. Z.B. die Initialisierungs- und Vollendungverfahren erzeugt für den Kostenzähler Skelett sind wie folgt definiert. POA_COUNTER_INIT: PROC(POA_COUNTER_PTR); dclpoa_counter_ptr-PTRBYADDR; /* benennen Sie zuerst sofortige niedrige Schnittstelleninit*/ |  |
|
| |
|
|