summaryrefslogtreecommitdiff
path: root/TAO/tao/Active_Object_Map.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Active_Object_Map.h')
-rw-r--r--TAO/tao/Active_Object_Map.h652
1 files changed, 0 insertions, 652 deletions
diff --git a/TAO/tao/Active_Object_Map.h b/TAO/tao/Active_Object_Map.h
deleted file mode 100644
index e8c1cda6467..00000000000
--- a/TAO/tao/Active_Object_Map.h
+++ /dev/null
@@ -1,652 +0,0 @@
-/* -*- C++ -*- */
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO
-//
-// = FILENAME
-// Active_Object_Map.h
-//
-// = AUTHOR
-// Irfan Pyarali
-//
-// ============================================================================
-
-#ifndef TAO_ACTIVE_OBJECT_MAP_H
-#define TAO_ACTIVE_OBJECT_MAP_H
-
-#include "tao/corbafwd.h"
-#include "tao/Servant_Base.h"
-#include "ace/Map.h"
-#include "tao/Server_Strategy_Factory.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_Incremental_Key_Generator
-{
- // = TITLE
- // Defines a key generator.
- //
- // = DESCRIPTION
- // This class is used in adapters of maps that do not produce keys.
-public:
-
- TAO_Incremental_Key_Generator (void);
-
- int operator() (PortableServer::ObjectId &id);
-
-protected:
-
- CORBA::ULong counter_;
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_Export TAO_ObjectId_Hash
-{
- // = TITLE
- // Hashing class for Object Ids.
- //
- // = DESCRIPTION
- // Define the hash() method for Object Ids.
-public:
-
- u_long operator () (const PortableServer::ObjectId &id) const;
- // Returns hash value.
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_Ignore_Original_Key_Adapter
-{
- // = TITLE
- // A key adapter (encode/decode) class.
- //
- // = DESCRIPTION
- // Define the encoding and decoding methods for converting
- // between Object Ids and active keys. This class ignores the
- // <original_key> passed to it.
-public:
-
- int encode (const PortableServer::ObjectId &original_key,
- const ACE_Active_Map_Manager_Key &active_key,
- PortableServer::ObjectId &modified_key);
-
- int decode (const PortableServer::ObjectId &modified_key,
- ACE_Active_Map_Manager_Key &active_key);
-
- int decode (const PortableServer::ObjectId &modified_key,
- PortableServer::ObjectId &original_key);
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_Preserve_Original_Key_Adapter
-{
- // = TITLE
- // A key adapter (encode/decode) class.
- //
- // = DESCRIPTION
- // Define the encoding and decoding methods for converting
- // between Object Ids and active keys. This class remembers the
- // <original_key> passed to it.
-public:
-
- int encode (const PortableServer::ObjectId &original_key,
- const ACE_Active_Map_Manager_Key &active_key,
- PortableServer::ObjectId &modified_key);
-
- int decode (const PortableServer::ObjectId &modified_key,
- ACE_Active_Map_Manager_Key &active_key);
-
- int decode (const PortableServer::ObjectId &modified_key,
- PortableServer::ObjectId &original_key);
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-// Comparison of Object Ids. Defined in Stub.cpp for TAO_opaque (an
-// alias of PortableServer::ObjectId).
-extern TAO_Export int operator== (const PortableServer::ObjectId &l,
- const PortableServer::ObjectId &r);
-
-////////////////////////////////////////////////////////////////////////////////
-
-// Forward declarations.
-class TAO_Id_Uniqueness_Strategy;
-class TAO_Lifespan_Strategy;
-class TAO_Id_Assignment_Strategy;
-class TAO_Id_Hint_Strategy;
-
-class TAO_Active_Object_Map
-{
- // = TITLE
- // Map of object ids to servants.
- //
- // = DESCRIPTION
- // Implementation to be used by the POA.
-public:
-
- TAO_Active_Object_Map (int user_id_policy,
- int unique_id_policy,
- int persistent_id_policy,
- const TAO_Server_Strategy_Factory::Active_Object_Map_Creation_Parameters &creation_parameters);
- // Constructor.
-
- ~TAO_Active_Object_Map (void);
- // Destructor.
-
- int is_servant_in_map (PortableServer::Servant servant);
- // Must be used with UNIQUE_ID policy.
-
- int is_user_id_in_map (const PortableServer::ObjectId &user_id);
- // Can be used with any policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- int bind_using_system_id_returning_system_id (PortableServer::Servant servant,
- PortableServer::ObjectId_out system_id);
- // Must be used with SYSTEM_ID policy.
-
- int bind_using_system_id_returning_user_id (PortableServer::Servant servant,
- PortableServer::ObjectId_out user_id);
- // Must be used with SYSTEM_ID policy.
-
- int bind_using_user_id (PortableServer::Servant servant,
- const PortableServer::ObjectId &user_id);
- // Can be used with any policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- int find_system_id_using_user_id (const PortableServer::ObjectId &user_id,
- PortableServer::ObjectId_out system_id);
- // Can be used with any policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- int rebind_using_user_id_and_system_id (PortableServer::Servant servant,
- const PortableServer::ObjectId &user_id,
- const PortableServer::ObjectId &system_id);
- // Can be used with any policy.
-
- int unbind_using_user_id (const PortableServer::ObjectId &user_id);
- // Can be used with any policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- int find_user_id_using_servant (PortableServer::Servant servant,
- PortableServer::ObjectId_out user_id);
- // Must be used with UNIQUE_ID policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- int find_system_id_using_servant (PortableServer::Servant servant,
- PortableServer::ObjectId_out system_id);
- // Must be used with UNIQUE_ID policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- int find_servant_using_user_id (const PortableServer::ObjectId &user_id,
- PortableServer::Servant &servant);
- // Can be used with any policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- int find_servant_using_system_id (const PortableServer::ObjectId &system_id,
- PortableServer::Servant &servant);
- // Can be used with any policy.
-
- int find_servant_and_system_id_using_user_id (const PortableServer::ObjectId &user_id,
- PortableServer::Servant &servant,
- PortableServer::ObjectId_out system_id);
- // Can be used with any policy. With the SYSTEM_ID policy,
- // <user_id> is identical to <system_id>.
-
- int find_user_id_using_system_id (const PortableServer::ObjectId &system_id,
- PortableServer::ObjectId_out user_id);
- // Can be used with any policy. When the SYSTEM_ID policy is used,
- // the <system_id> is identical to <user_id>.
-
- size_t system_id_size (void);
- // Can be used with any policy.
-
- struct Map_Entry
- {
- // = TITLE
- // Value field of the active object map.
- //
- // = DESCRIPTION
- //
- // We need a mapping from and to all of the following fields:
- // <user_id>, <system_id>, and <servant>. Therefore, we keep
- // all the fields together in the map.
-
- PortableServer::ObjectId user_id_;
- PortableServer::ObjectId system_id_;
- PortableServer::Servant servant_;
- };
-
- typedef ACE_Map<
- PortableServer::ObjectId,
- Map_Entry *> user_id_map;
- // Base class of the id map.
-
- typedef ACE_Hash_Map_Manager_Ex_Adapter<
- PortableServer::ObjectId,
- Map_Entry *,
- TAO_ObjectId_Hash,
- ACE_Equal_To<PortableServer::ObjectId>,
- TAO_Incremental_Key_Generator> user_id_hash_map;
- // Id hash map.
-
- typedef ACE_Map_Manager_Adapter<
- PortableServer::ObjectId,
- Map_Entry *,
- TAO_Incremental_Key_Generator> user_id_linear_map;
- // Id linear map.
-
- typedef ACE_Active_Map_Manager_Adapter<
- PortableServer::ObjectId,
- Map_Entry *,
- TAO_Ignore_Original_Key_Adapter> user_id_active_map;
- // Id active map.
-
- typedef ACE_Map<
- PortableServer::Servant,
- Map_Entry *> servant_map;
- // Base class of the servant map.
-
- typedef ACE_Hash_Map_Manager_Ex_Adapter<
- PortableServer::Servant,
- Map_Entry *,
- TAO_Servant_Hash,
- ACE_Equal_To<PortableServer::Servant>,
- ACE_Noop_Key_Generator<PortableServer::Servant> > servant_hash_map;
- // Servant hash map.
-
- typedef ACE_Map_Manager_Adapter<
- PortableServer::Servant,
- Map_Entry *,
- ACE_Noop_Key_Generator<PortableServer::Servant> > servant_linear_map;
- // Servant linear map.
-
- user_id_map *user_id_map_;
- // Id map.
-
- servant_map *servant_map_;
- // Servant map.
-
- TAO_Id_Uniqueness_Strategy *id_uniqueness_strategy_;
- // Id uniqueness strategy.
-
- TAO_Lifespan_Strategy *lifespan_strategy_;
- // Lifespan strategy.
-
- TAO_Id_Assignment_Strategy *id_assignment_strategy_;
- // Id assignment strategy.
-
- TAO_Id_Hint_Strategy *id_hint_strategy_;
- // Id hint strategy.
-
- size_t system_id_size_;
- // Size of the system id produced by the map.
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_Id_Uniqueness_Strategy
-{
- // = TITLE
- // Id uniqueness strategy.
- //
- // = DESCRIPTION
- // Strategy for implementing points of variation between the
- // UNIQUE_ID and the MULTIPLE_ID policies.
-public:
-
- virtual ~TAO_Id_Uniqueness_Strategy (void);
- // Virtual destructor.
-
- virtual int is_servant_in_map (PortableServer::Servant servant) = 0;
- // Must be used with UNIQUE_ID policy.
-
- virtual int unbind_using_user_id (const PortableServer::ObjectId &user_id) = 0;
- // Can be used with any policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- virtual int find_user_id_using_servant (PortableServer::Servant servant,
- PortableServer::ObjectId_out user_id) = 0;
- // Must be used with UNIQUE_ID policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- virtual int find_system_id_using_servant (PortableServer::Servant servant,
- PortableServer::ObjectId_out system_id) = 0;
- // Must be used with UNIQUE_ID policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- virtual int bind_using_user_id (PortableServer::Servant servant,
- const PortableServer::ObjectId &user_id,
- TAO_Active_Object_Map::Map_Entry *&entry) = 0;
- // Can be used with any policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- virtual void set_active_object_map (TAO_Active_Object_Map *active_object_map);
- // Set the active map.
-
-protected:
-
- TAO_Active_Object_Map *active_object_map_;
- // Pointer to the active map.
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_Unique_Id_Strategy : public TAO_Id_Uniqueness_Strategy
-{
- // = TITLE
- // Unique id strategy.
- //
- // = DESCRIPTION
- // Strategy for the UNIQUE_ID policy.
-public:
-
- virtual int is_servant_in_map (PortableServer::Servant servant);
- // Must be used with UNIQUE_ID policy.
-
- virtual int unbind_using_user_id (const PortableServer::ObjectId &user_id);
- // Can be used with any policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- virtual int find_user_id_using_servant (PortableServer::Servant servant,
- PortableServer::ObjectId_out user_id);
- // Must be used with UNIQUE_ID policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- virtual int find_system_id_using_servant (PortableServer::Servant servant,
- PortableServer::ObjectId_out system_id);
- // Must be used with UNIQUE_ID policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- virtual int bind_using_user_id (PortableServer::Servant servant,
- const PortableServer::ObjectId &user_id,
- TAO_Active_Object_Map::Map_Entry *&entry);
- // Can be used with any policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_Multiple_Id_Strategy : public TAO_Id_Uniqueness_Strategy
-{
- // = TITLE
- // Multiple id strategy.
- //
- // = DESCRIPTION
- // Strategy for the MULTIPLE_ID policy.
-public:
-
- virtual int is_servant_in_map (PortableServer::Servant servant);
- // Must be used with UNIQUE_ID policy.
-
- virtual int unbind_using_user_id (const PortableServer::ObjectId &user_id);
- // Can be used with any policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- virtual int find_user_id_using_servant (PortableServer::Servant servant,
- PortableServer::ObjectId_out user_id);
- // Must be used with UNIQUE_ID policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- virtual int find_system_id_using_servant (PortableServer::Servant servant,
- PortableServer::ObjectId_out system_id);
- // Must be used with UNIQUE_ID policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-
- virtual int bind_using_user_id (PortableServer::Servant servant,
- const PortableServer::ObjectId &user_id,
- TAO_Active_Object_Map::Map_Entry *&entry);
- // Can be used with any policy. With the SYSTEM_ID policy,
- // <user_id> is actually <system_id>.
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_Lifespan_Strategy
-{
- // = TITLE
- // Lifespan strategy.
- //
- // = DESCRIPTION
- // Strategy for implementing points of variation between the
- // TRANSIENT and the PERSISTENT policies.
-public:
-
- virtual ~TAO_Lifespan_Strategy (void);
- // Virtual destructor.
-
- virtual int find_servant_using_system_id (const PortableServer::ObjectId &system_id,
- PortableServer::Servant &servant) = 0;
- // Can be used with any policy.
-
- virtual void set_active_object_map (TAO_Active_Object_Map *active_object_map);
- // Set the active map.
-
-protected:
-
- TAO_Active_Object_Map *active_object_map_;
- // Pointer to the active map.
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_Transient_Strategy : public TAO_Lifespan_Strategy
-{
- // = TITLE
- // Transient strategy.
- //
- // = DESCRIPTION
- // Strategy for the TRANSIENT policy.
-public:
-
- virtual int find_servant_using_system_id (const PortableServer::ObjectId &system_id,
- PortableServer::Servant &servant);
- // Can be used with any policy.
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_Persistent_Strategy : public TAO_Lifespan_Strategy
-{
- // = TITLE
- // Persistent strategy.
- //
- // = DESCRIPTION
- // Strategy for the PERSISTENT policy.
-public:
-
- virtual int find_servant_using_system_id (const PortableServer::ObjectId &system_id,
- PortableServer::Servant &servant);
- // Can be used with any policy.
-
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_Id_Assignment_Strategy
-{
- // = TITLE
- // Id uniqueness strategy.
- //
- // = DESCRIPTION
- // Strategy for implementing points of variation between the
- // USER_ID and the SYSTEM_ID policies.
-public:
-
- virtual ~TAO_Id_Assignment_Strategy (void);
- // Virtual destructor.
-
- virtual int bind_using_system_id (PortableServer::Servant servant,
- TAO_Active_Object_Map::Map_Entry *&entry) = 0;
- // Must be used with SYSTEM_ID policy.
-
- virtual void set_active_object_map (TAO_Active_Object_Map *active_object_map);
- // Set the active map.
-
-protected:
-
- TAO_Active_Object_Map *active_object_map_;
- // Pointer to the active map.
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_User_Id_Strategy : public TAO_Id_Assignment_Strategy
-{
- // = TITLE
- // User id strategy.
- //
- // = DESCRIPTION
- // Strategy for the USER_ID policy.
-public:
-
- virtual int bind_using_system_id (PortableServer::Servant servant,
- TAO_Active_Object_Map::Map_Entry *&entry);
- // Must be used with SYSTEM_ID policy.
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_System_Id_With_Unique_Id_Strategy : public TAO_Id_Assignment_Strategy
-{
- // = TITLE
- // System id strategy.
- //
- // = DESCRIPTION
- // Strategy for the SYSTEM_ID policy (with UNIQUE_ID policy).
-public:
-
- virtual int bind_using_system_id (PortableServer::Servant servant,
- TAO_Active_Object_Map::Map_Entry *&entry);
- // Must be used with SYSTEM_ID policy.
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_System_Id_With_Multiple_Id_Strategy : public TAO_Id_Assignment_Strategy
-{
- // = TITLE
- // System id strategy.
- //
- // = DESCRIPTION
- // Strategy for the SYSTEM_ID policy (with MULTIPLE_ID policy).
-public:
-
- virtual int bind_using_system_id (PortableServer::Servant servant,
- TAO_Active_Object_Map::Map_Entry *&entry);
- // Must be used with SYSTEM_ID policy.
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_Id_Hint_Strategy
-{
- // = TITLE
- // Id uniqueness strategy.
- //
- // = DESCRIPTION
- // Strategy for implementing points of variation between the
- // active hint and the no hint policies.
-public:
-
- virtual ~TAO_Id_Hint_Strategy (void);
- // Virtual destructor.
-
- virtual int recover_key (const PortableServer::ObjectId &system_id,
- PortableServer::ObjectId &user_id) = 0;
-
- virtual int bind (TAO_Active_Object_Map::Map_Entry &entry) = 0;
-
- virtual int unbind (TAO_Active_Object_Map::Map_Entry &entry) = 0;
-
- virtual int find (const PortableServer::ObjectId &system_id,
- TAO_Active_Object_Map::Map_Entry *&entry) = 0;
-
- virtual size_t hint_size (void) = 0;
-
- virtual int system_id (PortableServer::ObjectId_out system_id,
- TAO_Active_Object_Map::Map_Entry &entry) = 0;
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_Active_Hint_Strategy : public TAO_Id_Hint_Strategy
-{
- // = TITLE
- // Active hint strategy.
- //
- // = DESCRIPTION
- // Strategy for adding active hints to ids.
-public:
-
- virtual ~TAO_Active_Hint_Strategy (void);
- // Virtual destructor.
-
- virtual int recover_key (const PortableServer::ObjectId &system_id,
- PortableServer::ObjectId &user_id);
-
- virtual int bind (TAO_Active_Object_Map::Map_Entry &entry);
-
- virtual int unbind (TAO_Active_Object_Map::Map_Entry &entry);
-
- virtual int find (const PortableServer::ObjectId &system_id,
- TAO_Active_Object_Map::Map_Entry *&entry);
-
- virtual size_t hint_size (void);
-
- virtual int system_id (PortableServer::ObjectId_out system_id,
- TAO_Active_Object_Map::Map_Entry &entry);
-
- typedef ACE_Active_Map_Manager_Adapter<
- PortableServer::ObjectId,
- TAO_Active_Object_Map::Map_Entry *,
- TAO_Preserve_Original_Key_Adapter> system_id_map;
-
- system_id_map system_id_map_;
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-class TAO_No_Hint_Strategy : public TAO_Id_Hint_Strategy
-{
- // = TITLE
- // No hint strategy.
- //
- // = DESCRIPTION
- // Strategy for not adding active hints to ids.
-public:
-
- virtual ~TAO_No_Hint_Strategy (void);
- // Virtual destructor.
-
- virtual int recover_key (const PortableServer::ObjectId &system_id,
- PortableServer::ObjectId &user_id);
-
- virtual int bind (TAO_Active_Object_Map::Map_Entry &entry);
-
- virtual int unbind (TAO_Active_Object_Map::Map_Entry &entry);
-
- virtual int find (const PortableServer::ObjectId &system_id,
- TAO_Active_Object_Map::Map_Entry *&entry);
-
- virtual size_t hint_size (void);
-
- virtual int system_id (PortableServer::ObjectId_out system_id,
- TAO_Active_Object_Map::Map_Entry &entry);
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
-#if defined (__ACE_INLINE__)
-# include "tao/Active_Object_Map.i"
-#endif /* __ACE_INLINE__ */
-
-#endif /* TAO_ACTIVE_OBJECT_MAP_T_H */