00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file Endpoint_Selector_Factory.h 00006 * 00007 * $Id: Endpoint_Selector_Factory.h 79829 2007-10-23 12:39:52Z johnnyw $ 00008 * 00009 * Strategies for selecting profile/endpoint from an IOR for making an 00010 * invocation. 00011 * 00012 * @author Marina Spivak <marina@cs.wustl.edu> 00013 * @author Frank Hunleth <fhunleth@cs.wustl.edu> 00014 */ 00015 //============================================================================= 00016 00017 #ifndef TAO_ENDPOINT_SELECTOR_FACTORY_H 00018 #define TAO_ENDPOINT_SELECTOR_FACTORY_H 00019 00020 #include /**/ "ace/pre.h" 00021 00022 #include /**/ "tao/TAO_Export.h" 00023 00024 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00025 # pragma once 00026 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00027 00028 #include /**/ "tao/Versioned_Namespace.h" 00029 #include "ace/Service_Object.h" 00030 00031 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00032 00033 namespace CORBA 00034 { 00035 class Exception; 00036 } 00037 00038 class TAO_Invocation_Endpoint_Selector; 00039 00040 00041 // **************************************************************** 00042 00043 /** 00044 * @class TAO_Endpoint_Selector_Factory 00045 * 00046 * @brief Factory for initializing <Endpoint_Selection_State> and 00047 * obtaining appropriate <Invocation_Endpoint_Selector>. 00048 * 00049 * Used by Invocation classes to intialize its endpoint selection 00050 * strategy and state based on the effective policies. 00051 * Endpoint selection strategies are stateless objects - all the 00052 * state they need is contained by Invocation in 00053 * <Endpoint_Selection_State>. Thus, rather than allocating an 00054 * endpoint selection strategy object for each Invocation, the 00055 * factory simply returns the appropriate one from the 00056 * set preallocated in the ORB_Core. One endpoint selection 00057 * strategy object can be used by many invocations concurrently. 00058 */ 00059 class TAO_Export TAO_Endpoint_Selector_Factory 00060 : public ACE_Service_Object 00061 { 00062 public: 00063 /// Destructor. 00064 virtual ~TAO_Endpoint_Selector_Factory (void); 00065 00066 /// Get an Invocation's endpoint selection strategy and 00067 /// initialize the endpoint selection state instance. 00068 virtual TAO_Invocation_Endpoint_Selector *get_selector (void) = 0; 00069 }; 00070 00071 TAO_END_VERSIONED_NAMESPACE_DECL 00072 00073 #include /**/ "ace/post.h" 00074 #endif /* TAO_ENDPOINT_SELECTOR_FACTORY_H */