📄 naming_context_interface.h
字号:
// -*- C++ -*-
//=============================================================================
/**
* @file Naming_Context_Interface.h
*
* Naming_Context_Interface.h,v 1.13 2003/11/04 05:21:32 dhinton Exp
*
* @author Marina Spivak <marina@cs.wustl.edu>
*/
//=============================================================================
#ifndef TAO_NAMING_CONTEXT_INTERFACE_H
#define TAO_NAMING_CONTEXT_INTERFACE_H
#include /**/ "ace/pre.h"
#include "orbsvcs/CosNamingS.h"
#include "naming_export.h"
#include "ace/Null_Mutex.h"
class TAO_Naming_Context_Impl;
// This is to remove "inherits via dominance" warnings from MSVC.
#if defined (_MSC_VER)
# pragma warning (disable : 4250)
#endif /* _MSC_VER */
/**
* @class TAO_Naming_Context
*
* @brief This class plays a role of the 'Abstraction' (aka 'Interface')
* in the Bridge pattern architecture of the CosNaming::NamingContext
* implementation.
*
* This class simply forwards all client requests to a concrete
* NamingContext implementation through its <impl_> pointer. See
* README file for more info. Comments for the idl methods
* describe methods semantics - actual actions are carried out by
* concrete implementors.
*/
class TAO_Naming_Export TAO_Naming_Context :
public virtual PortableServer::RefCountServantBase,
public virtual POA_CosNaming::NamingContextExt
{
public:
// = Initialization and termination methods.
/// Constructor. Initializes <impl_> with a concrete implementation.
TAO_Naming_Context (TAO_Naming_Context_Impl *impl);
/// Destructor.
~TAO_Naming_Context (void);
// = CosNaming::NamingContext idl interface methods.
/**
* Create a binding for name <n> and object <obj> in the naming
* context. Compound names are treated as follows: ctx->bind (<c1;
* c2; c3; cn>, obj) = (ctx->resolve (<c1; c2; cn-1>))->bind (<cn>,
* obj) if the there already exists a binding for the specified
* name, <AlreadyBound> exception is thrown. Naming contexts should
* be bound using <bind_context> and <rebind_context> in order to
* participate in name resolution later.
*/
virtual void bind (const CosNaming::Name &n,
CORBA::Object_ptr obj
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException,
CosNaming::NamingContext::NotFound,
CosNaming::NamingContext::CannotProceed,
CosNaming::NamingContext::InvalidName,
CosNaming::NamingContext::AlreadyBound));
/**
* This is similar to <bind> operation above, except for when the
* binding for the specified name already exists in the specified
* context. In that case, the existing binding is replaced with the
* new one.
*/
virtual void rebind (const CosNaming::Name &n,
CORBA::Object_ptr obj
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException,
CosNaming::NamingContext::NotFound,
CosNaming::NamingContext::CannotProceed,
CosNaming::NamingContext::InvalidName));
/**
* This is the version of <bind> specifically for binding naming
* contexts, so that they will participate in name resolution when
* compound names are passed to be resolved.
*/
virtual void bind_context (const CosNaming::Name &n,
CosNaming::NamingContext_ptr nc
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException,
CosNaming::NamingContext::NotFound,
CosNaming::NamingContext::CannotProceed,
CosNaming::NamingContext::InvalidName,
CosNaming::NamingContext::AlreadyBound));
/**
* This is a version of <rebind> specifically for naming contexts,
* so that they can participate in name resolution when compound
* names are passed.
*/
virtual void rebind_context (const CosNaming::Name &n,
CosNaming::NamingContext_ptr nc
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException,
CosNaming::NamingContext::NotFound,
CosNaming::NamingContext::CannotProceed,
CosNaming::NamingContext::InvalidName));
/**
* Return object reference that is bound to the name. Compound name
* resolve is defined as follows: ctx->resolve (<c1; c2; cn>) =
* ctx->resolve (<c1; c2 cn-1>)->resolve (<cn>) The naming service
* does not return the type of the object. Clients are responsible
* for "narrowing" the object to the appropriate type.
*/
virtual CORBA::Object_ptr resolve (const CosNaming::Name &n
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException,
CosNaming::NamingContext::NotFound,
CosNaming::NamingContext::CannotProceed,
CosNaming::NamingContext::InvalidName));
/**
* Remove the name binding from the context. When compound names
* are used, unbind is defined as follows: ctx->unbind (<c1; c2;
* cn>) = (ctx->resolve (<c1; c2; cn-1>))->unbind (<cn>)
*/
virtual void unbind (const CosNaming::Name &n
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException,
CosNaming::NamingContext::NotFound,
CosNaming::NamingContext::CannotProceed,
CosNaming::NamingContext::InvalidName));
/**
* This operation returns a new naming context implemented by the
* same naming server in which the operation was invoked. The
* context is not bound.
*/
virtual CosNaming::NamingContext_ptr new_context (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException));
/**
* This operation creates a new context and binds it to the name
* supplied as an argument. The newly-created context is
* implemented by the same server as the context in which it was
* bound (the name argument excluding the last component).
*/
virtual CosNaming::NamingContext_ptr bind_new_context (
const CosNaming::Name &n
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException,
CosNaming::NamingContext::NotFound,
CosNaming::NamingContext::AlreadyBound,
CosNaming::NamingContext::CannotProceed,
CosNaming::NamingContext::InvalidName));
/**
* Delete the naming context. The user should take care to <unbind> any
* bindings in which the given context is bound to some names, to
* avoid dangling references when invoking <destroy> operation.
* NOTE: <destory> is a no-op on the root context.
* NOTE: after <destroy> is invoked on a Naming Context, all
* BindingIterators associated with that Naming Context are also destroyed.
*/
virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException,
CosNaming::NamingContext::NotEmpty));
/**
* Returns at most the requested number of bindings <how_many> in
* <bl>. If the naming context contains additional bindings, they
* are returned with a BindingIterator. In the naming context does
* not contain any additional bindings <bi> returned as null.
*/
virtual void list (CORBA::ULong how_many,
CosNaming::BindingList_out bl,
CosNaming::BindingIterator_out bi
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException));
/**
* Stringify the name using '\' as the escape character. The
* characters '.' , '/' and '\' are to be escaped. If the input name
* is invalid i.e. if the number of characters in the name is zero,
* an InvalidName exception is to be raised.
*/
virtual char * to_string (const CosNaming::Name &n
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
ACE_THROW_SPEC ((CORBA::SystemException,
CosNaming::NamingContext::InvalidName));
/**
* The in parameter is an stringified name. This function removes the
* escape character '\' and destringifies the stringified name and returns
* it.
*/
virtual CosNaming::Name * to_name (const char *sn
ACE_ENV_ARG_DECL_WITH_DEFAULTS)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -