| |
Juni 2003 C++-Diagramm: Diagramm von DSI zu C++ 1-151 1 Das NVList zur Verfügung gestellt zum ORB wird dann durch das ORB besessen. Es wird freigegeben nach der DIR-Rückkehr. Dieses läßt das DIR das Heraus führen Werte, einschließlich der Rückholseite von inout Werte, zum ORB durch das Ändern des NVList nachher arguments() ist benannt worden. Folglich wenn das DIR speichert NVList_ptr in NVList_var , sollte es es zu führen arguments() Funktion durch das Hervorrufen _ retn() arbeiten Sie auf ihm, um es zu zwingen, um Besitz von seinem internen freizugeben NVList_ptr zum ORB. 1,39,3 Diagramm des dynamischen Implementierungsprogramms PortableServer In C++ übernehmen DSI-Bedienstete vom Standard DynamicImplementation Kategorie. Diese Kategorie übernimmt vom ServantBase klassifizieren Sie und wird auch in definiert PortableServer namespace. Die dynamische Skeleton Schnittstelle (DSI) ist eingeführt durch Bedienstete, die Mitglieder der Kategorien sind, die von dynamischem übernehmen skeleton Kategorien. // C++ namespace PortableServer { Kategorie DynamicImplementation: allgemeines virtuelles ServantBase { Öffentlichkeit: This(Object_ptr _); virtuelles leeres invoke( Antrag ServerRequest_ptr ) = 0; virtuelles RepositoryId _ primary_interface( oid constObjectId&, Poa POA_ptr ) = 0; }; } Das _ this() Funktion bringt ein CORBA::Object_ptr zurück für den Zielgegenstand. Verschieden _ this() für statische Skelette ist seine Rückholart nicht weil ein DSI Schnittstelle-spezifisch Bediensteter kann incarnate sehr gut mehrfache CORBA-Gegenstände der unterschiedlichen Arten. Wenn DynamicImplementation::_this() wird außerhalb des Kontextes von a hervorgerufen bitten Sie um Anforderung auf einem Zielgegenstand, der vom DSI-Bediensteten gedient wird, es anhebt PortableServer::WrongPolicy Ausnahme. Das invoke() Methode empfängt die Anträge, die zu jedem möglichem CORBA-Gegenstand herausgegeben werden, der vorbei incarnated ist der DSI-Bedienstete und führt die Verarbeitung durch, die notwendig ist, den Antrag durchzuführen. Anträge für die Standardgegenstandbetriebe (_ get_interface _ is_a und _ non_existent ) benennen Sie nicht invoke() , aber benennen die entsprechenden Funktionen definiert in ServantBase stattdessen. Das _ primary_interface() Methode empfängt ein ObjectId Wert und a POA_ptr als Eingangsparameter und -rückkehr ein gültiges RepositoryId Darstellen am meisten-abgeleitete Schnittstelle für dieses oid . |  |
|
| |
|
|