TAO_Multiple_Id_Strategy Class Reference

Multiple id strategy. More...

#include <Active_Object_Map.h>

Inheritance diagram for TAO_Multiple_Id_Strategy:

Inheritance graph
[legend]
Collaboration diagram for TAO_Multiple_Id_Strategy:

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual int is_servant_in_map (PortableServer::Servant servant, bool &deactivated)
 Must be used with UNIQUE_ID policy.

virtual int unbind_using_user_id (const PortableServer::ObjectId &user_id)
virtual int find_user_id_using_servant (PortableServer::Servant servant, PortableServer::ObjectId_out user_id)
virtual int find_system_id_using_servant (PortableServer::Servant servant, PortableServer::ObjectId_out system_id, CORBA::Short &priority)
virtual int bind_using_user_id (PortableServer::Servant servant, const PortableServer::ObjectId &user_id, CORBA::Short priority, TAO_Active_Object_Map_Entry *&entry)
virtual CORBA::Boolean remaining_activations (PortableServer::Servant servant)

Detailed Description

Multiple id strategy.

Strategy for the MULTIPLE_ID policy.

Definition at line 338 of file Active_Object_Map.h.


Member Function Documentation

int TAO_Multiple_Id_Strategy::bind_using_user_id PortableServer::Servant  servant,
const PortableServer::ObjectId user_id,
CORBA::Short  priority,
TAO_Active_Object_Map_Entry *&  entry
[virtual]
 

Can be used with any policy. With the SYSTEM_ID policy, is actually .

Implements TAO_Id_Uniqueness_Strategy.

Definition at line 535 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_Id_Hint_Strategy::unbind(), TAO_Active_Object_Map_Entry::user_id_, and TAO_Active_Object_Map::user_id_map_.

00539 {
00540   int result = this->active_object_map_->user_id_map_->find (user_id, entry);
00541   if (result == 0)
00542     {
00543       if (servant != 0)
00544         entry->servant_ = servant;
00545     }
00546   else
00547     {
00548       ACE_NEW_RETURN (entry,
00549                       TAO_Active_Object_Map_Entry,
00550                       -1);
00551       entry->user_id_ = user_id;
00552       entry->servant_ = servant;
00553       entry->priority_ = priority;
00554 
00555       result =
00556         this->active_object_map_->id_hint_strategy_->bind (*entry);
00557 
00558       if (result == 0)
00559         {
00560           result = this->active_object_map_->user_id_map_->bind (entry->user_id_,
00561                                                                  entry);
00562           if (result != 0)
00563             {
00564               this->active_object_map_->id_hint_strategy_->unbind (*entry);
00565               delete entry;
00566             }
00567         }
00568       else
00569         delete entry;
00570     }
00571 
00572   return result;
00573 }

int TAO_Multiple_Id_Strategy::find_system_id_using_servant PortableServer::Servant  servant,
PortableServer::ObjectId_out  system_id,
CORBA::Short priority
[virtual]
 

Must be used with UNIQUE_ID policy. With the SYSTEM_ID policy, is actually .

Implements TAO_Id_Uniqueness_Strategy.

Definition at line 600 of file Active_Object_Map.cpp.

00603 {
00604   return -1;
00605 }

int TAO_Multiple_Id_Strategy::find_user_id_using_servant PortableServer::Servant  servant,
PortableServer::ObjectId_out  user_id
[virtual]
 

Must be used with UNIQUE_ID policy. With the SYSTEM_ID policy, is actually .

Implements TAO_Id_Uniqueness_Strategy.

Definition at line 593 of file Active_Object_Map.cpp.

00595 {
00596   return -1;
00597 }

int TAO_Multiple_Id_Strategy::is_servant_in_map PortableServer::Servant  servant,
bool &  deactivated
[virtual]
 

Must be used with UNIQUE_ID policy.

Implements TAO_Id_Uniqueness_Strategy.

Definition at line 529 of file Active_Object_Map.cpp.

00530 {
00531   return -1;
00532 }

CORBA::Boolean TAO_Multiple_Id_Strategy::remaining_activations PortableServer::Servant  servant  )  [virtual]
 

Are there any remaining activations of in the active object map? Can be used with any policy.

Implements TAO_Id_Uniqueness_Strategy.

Definition at line 608 of file Active_Object_Map.cpp.

References TAO_Active_Object_Map_Entry::servant_, and TAO_Active_Object_Map::user_id_map_.

00609 {
00610   TAO_Active_Object_Map::user_id_map::iterator end
00611     = this->active_object_map_->user_id_map_->end ();
00612 
00613   for (TAO_Active_Object_Map::user_id_map::iterator iter
00614          = this->active_object_map_->user_id_map_->begin ();
00615        iter != end;
00616        ++iter)
00617     {
00618       TAO_Active_Object_Map::user_id_map::value_type map_pair = *iter;
00619       TAO_Active_Object_Map_Entry *entry = map_pair.second ();
00620 
00621       if (entry->servant_ == servant)
00622         return 1;
00623     }
00624 
00625   return 0;
00626 }

int TAO_Multiple_Id_Strategy::unbind_using_user_id const PortableServer::ObjectId user_id  )  [virtual]
 

Can be used with any policy. With the SYSTEM_ID policy, is actually .

Implements TAO_Id_Uniqueness_Strategy.

Definition at line 576 of file Active_Object_Map.cpp.

References TAO_Active_Object_Map::id_hint_strategy_, TAO_Id_Hint_Strategy::unbind(), and TAO_Active_Object_Map::user_id_map_.

00577 {
00578   TAO_Active_Object_Map_Entry *entry = 0;
00579   int result = this->active_object_map_->user_id_map_->unbind (user_id,
00580                                                                entry);
00581   if (result == 0)
00582     {
00583       result = this->active_object_map_->id_hint_strategy_->unbind (*entry);
00584 
00585       if (result == 0)
00586         delete entry;
00587     }
00588 
00589   return result;
00590 }


The documentation for this class was generated from the following files:
Generated on Sun Jan 27 13:27:15 2008 for TAO_PortableServer by doxygen 1.3.6