#include <Active_Object_Map.h>
Inheritance diagram for TAO_System_Id_With_Unique_Id_Strategy:
Public Member Functions | |
virtual int | bind_using_system_id (PortableServer::Servant servant, CORBA::Short priority, TAO_Active_Object_Map_Entry *&entry) |
Must be used with SYSTEM_ID policy. |
Strategy for the SYSTEM_ID policy (with UNIQUE_ID policy).
Definition at line 494 of file Active_Object_Map.h.
|
Must be used with SYSTEM_ID policy.
Implements TAO_Id_Assignment_Strategy. Definition at line 740 of file Active_Object_Map.cpp. References ACE_NEW_RETURN, TAO_Id_Hint_Strategy::bind(), TAO_Active_Object_Map::id_hint_strategy_, TAO_Active_Object_Map_Entry::priority_, TAO_Active_Object_Map_Entry::servant_, TAO_Active_Object_Map::servant_map_, TAO_Id_Hint_Strategy::unbind(), TAO_Active_Object_Map_Entry::user_id_, and TAO_Active_Object_Map::user_id_map_.
00743 { 00744 ACE_NEW_RETURN (entry, 00745 TAO_Active_Object_Map_Entry, 00746 -1); 00747 00748 int result = this->active_object_map_->user_id_map_->bind_create_key (entry, 00749 entry->user_id_); 00750 if (result == 0) 00751 { 00752 entry->servant_ = servant; 00753 entry->priority_ = priority; 00754 00755 result = this->active_object_map_->id_hint_strategy_->bind (*entry); 00756 00757 if (result == 0) 00758 { 00759 if (servant != 0) 00760 result = this->active_object_map_->servant_map_->bind (entry->servant_, 00761 entry); 00762 00763 if (result != 0) 00764 { 00765 this->active_object_map_->user_id_map_->unbind (entry->user_id_); 00766 this->active_object_map_->id_hint_strategy_->unbind (*entry); 00767 delete entry; 00768 } 00769 } 00770 else 00771 { 00772 this->active_object_map_->user_id_map_->unbind (entry->user_id_); 00773 delete entry; 00774 } 00775 } 00776 else 00777 delete entry; 00778 00779 return result; 00780 } |