/* -*- C++ -*- */ // $Id$ // ============================================================================ // // = LIBRARY // TAO/orbsvcs/orbsvcs/IFRService // // = FILENAME // Contained_i.h // // = DESCRIPTION // Contained servant class. // // = AUTHOR // Jeff Parsons // // ============================================================================ #ifndef TAO_CONTAINED_I_H #define TAO_CONTAINED_I_H #include "IRObject_i.h" #include "ifr_service_export.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ #if defined(_MSC_VER) #if (_MSC_VER >= 1200) #pragma warning(push) #endif /* _MSC_VER >= 1200 */ #pragma warning(disable:4250) #endif /* _MSC_VER */ class TAO_IFRService_Export TAO_Contained_i : public virtual TAO_IRObject_i { // = TITLE // TAO_Contained_i // // = DESCRIPTION // Abstract base class for all IR objects that are contained // by other IR objects. // public: TAO_Contained_i (TAO_Repository_i *repo); // Constructor. virtual ~TAO_Contained_i (void); // Destructor. virtual void destroy ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); // Remove the repository entry. virtual void destroy_i ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); virtual char *id ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); char *id_i ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); virtual void id ( const char *id ACE_ENV_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); void id_i ( const char *id ACE_ENV_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); virtual char *name ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); char *name_i ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); virtual void name ( const char *name ACE_ENV_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); void name_i ( const char *name ACE_ENV_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); virtual char *version ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); char *version_i ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); virtual void version ( const char *version ACE_ENV_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); void version_i ( const char *version ACE_ENV_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); virtual CORBA::Container_ptr defined_in ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); CORBA::Container_ptr defined_in_i ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); virtual char *absolute_name ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); char *absolute_name_i ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); virtual CORBA::Repository_ptr containing_repository ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); virtual CORBA::Contained::Description *describe ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)) = 0; // Pure virtual. virtual CORBA::Contained::Description *describe_i ( ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)) = 0; // Pure virtual. virtual void move ( CORBA::Container_ptr new_container, const char *new_name, const char *new_version ACE_ENV_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); static int same_as_tmp_name (const char *name); // Called from TAO_IFR_Service_Utils::name_exists. protected: void move_i ( CORBA::Container_ptr new_container, const char *new_name, const char *new_version, CORBA::Boolean cleanup ACE_ENV_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); // Engine for move() with an extra 'cleanup' // parameter. Since a section removal can be // recursive, this need be done only at the top // level. private: CORBA::Boolean name_exists ( const char *name ACE_ENV_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); // Check if already exists in our container void contents_name_update ( ACE_TString stem, ACE_Configuration_Section_Key key ); // Recursively update the scoped name of our contents. void move_pre_process ( CORBA::Container_ptr container, const char *contained_path, const char *name ACE_ENV_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); // Mangle the names of references that are also // defined in the scope, so a name clash will // not occur when create_* is called. Create_* // unmangles the names. void move_contents ( CORBA::Container_ptr new_container ACE_ENV_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)); // Recursively calls move_i for definitions, // as well as operations and attributes if // applicable. private: static const char *tmp_name_holder_; }; #if defined(_MSC_VER) && (_MSC_VER >= 1200) #pragma warning(pop) #endif /* _MSC_VER */ #endif /* TAO_CONTAINED_I_H */