Public Member Functions

TAO_System_Id_With_Unique_Id_Strategy Class Reference

System id strategy. More...

#include <Active_Object_Map.h>

Inheritance diagram for TAO_System_Id_With_Unique_Id_Strategy:
Inheritance graph
[legend]
Collaboration diagram for TAO_System_Id_With_Unique_Id_Strategy:
Collaboration graph
[legend]

List of all members.

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.

Detailed Description

System id strategy.

Strategy for the SYSTEM_ID policy (with UNIQUE_ID policy).

Definition at line 558 of file Active_Object_Map.h.


Member Function Documentation

int TAO_System_Id_With_Unique_Id_Strategy::bind_using_system_id ( PortableServer::Servant  servant,
CORBA::Short  priority,
TAO_Active_Object_Map_Entry *&  entry 
) [virtual]

Must be used with SYSTEM_ID policy.

Implements TAO_Id_Assignment_Strategy.

Definition at line 876 of file Active_Object_Map.cpp.

{
  ACE_NEW_RETURN (entry,
                  TAO_Active_Object_Map_Entry,
                  -1);

  int result =
    this->active_object_map_->user_id_map_->bind_create_key (entry,
                                                             entry->user_id_);
  if (result == 0)
    {
      entry->servant_ = servant;
      entry->priority_ = priority;

      result = this->active_object_map_->id_hint_strategy_->bind (*entry);

      if (result == 0)
        {
          if (servant != 0)
            {
              result =
                this->active_object_map_->servant_map_->bind (entry->servant_,
                                                              entry);
            }

          if (result != 0)
            {
              this->active_object_map_->user_id_map_->unbind (entry->user_id_);
              this->active_object_map_->id_hint_strategy_->unbind (*entry);
              delete entry;
            }
          else
            {
#if defined (TAO_HAS_MONITOR_POINTS) && (TAO_HAS_MONITOR_POINTS == 1)
              this->active_object_map_->monitor_->receive (
                this->active_object_map_->servant_map_->current_size ());
#endif /* TAO_HAS_MONITOR_POINTS==1 */
            }
        }
      else
        {
          this->active_object_map_->user_id_map_->unbind (entry->user_id_);
          delete entry;
        }
    }
  else
    {
      delete entry;
    }

  return result;
}


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines