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, int &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 339 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 537 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_.

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

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 606 of file Active_Object_Map.cpp.

00609 {
00610   return -1;
00611 }

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 596 of file Active_Object_Map.cpp.

00598 {
00599   ACE_UNUSED_ARG (servant);
00600   ACE_UNUSED_ARG (user_id);
00601 
00602   return -1;
00603 }

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

Must be used with UNIQUE_ID policy.

Implements TAO_Id_Uniqueness_Strategy.

Definition at line 530 of file Active_Object_Map.cpp.

00532 {
00533   return -1;
00534 }

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 614 of file Active_Object_Map.cpp.

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

00615 {
00616   TAO_Active_Object_Map::user_id_map::iterator end
00617     = this->active_object_map_->user_id_map_->end ();
00618 
00619   for (TAO_Active_Object_Map::user_id_map::iterator iter
00620          = this->active_object_map_->user_id_map_->begin ();
00621        iter != end;
00622        ++iter)
00623     {
00624       TAO_Active_Object_Map::user_id_map::value_type map_pair = *iter;
00625       TAO_Active_Object_Map_Entry *entry = map_pair.second ();
00626 
00627       if (entry->servant_ == servant)
00628         return 1;
00629     }
00630 
00631   return 0;
00632 }

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 579 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_.

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


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 12:45:34 2006 for TAO_PortableServer by doxygen 1.3.6