Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

CORBA_Environment Class Reference

CORBA_Environment. More...

#include <Environment.h>

Collaboration diagram for CORBA_Environment:

Collaboration graph
[legend]
List of all members.

Public Types

typedef CORBA_Environment_ptr _ptr_type
typedef CORBA_Environment_var _var_type

Public Methods

 CORBA_Environment (void)
 The default constructor, the environment will hold no exceptions. More...

 CORBA_Environment (const CORBA_Environment &ACE_TRY_ENV)
 Copy constructor. More...

CORBA_Environment & operator= (const CORBA_Environment &ACE_TRY_ENV)
 Assingment. More...

 ~CORBA_Environment (void)
 Destructor, release the exception. More...

int exception_type (void) const
 Return if the exception is a user exception or a system exception. More...

const char * exception_id (void) const
 return the repository ID for the exception. More...

void clear (void)
 Clear the exception. More...

void print_exception (const char *info, FILE *f=stdout) const
 Print the exception to output determined by f. This function is not CORBA compliant. More...


Static Public Methods

CORBA_Environment * _duplicate (CORBA_Environment *)
 Some static methods that need to be defined in every pseudo object. More...

CORBA_Environment * _nil (void)
CORBA_Environment & default_environment (void)

Public Attributes

CORBA_Exception *exception
void 
const
 CORBA::Environment retains ownership of the exception, this is contrary to the normal memory management rules in the C++ mapping, but actually mandated by the specification:. More...

void exception CORBA_Exceptionex
 CORBA::Environment assumes ownership of the exception, this is contrary to the normal memory management rules in the C++ mapping, but actually mandated by the specification:. More...


Private Methods

 CORBA_Environment (TAO_ORB_Core *orb_core)

Private Attributes

CORBA_Exceptionexception_
 Pointer to the exception object contained in the environment. More...

CORBA_Environment * previous_
 The previous environment on the "default environment stack". More...


Friends

class TAO_ORB_Core
 Initialize using a well known ORB Core; this is intended for the bootstraping of the ORB_Core, not for general consumption. More...


Detailed Description

CORBA_Environment.

A CORBA_Environment is a way to automagically ensure that exception data is freed -- the "var" class for Exceptions. It adds just a bit of convenience function support, helping classify exceptions as well as reducing memory leakage. The thread has a default environment to simplify porting between platforms that support native C++ exceptions and those that don't. This is a TSS resource (always), but with a twist: if the user creates a new environment the old one is "pushed" (actually the new one remembers it), eventually the new environment destructor pops itself from the stack and we recover the old environment. This means that if the user create a new environment and somebody calls a function using the default one the exception will still be received in the environment created by the user. The only drawback is that environments life time must nest properly, this shouldn't be a problem because environments are usually created on the stack, but, the spec allows their creation on the heap and/or as class members; we need to investigate the tradeoffs and take a decision.


Member Typedef Documentation

typedef CORBA_Environment_ptr CORBA_Environment::_ptr_type
 

typedef CORBA_Environment_var CORBA_Environment::_var_type
 


Constructor & Destructor Documentation

CORBA_Environment::CORBA_Environment void   
 

The default constructor, the environment will hold no exceptions.

CORBA_Environment::CORBA_Environment const CORBA_Environment &    rhs
 

Copy constructor.

CORBA_Environment::~CORBA_Environment void   
 

Destructor, release the exception.

CORBA_Environment::CORBA_Environment TAO_ORB_Core   orb_core [private]
 


Member Function Documentation

ACE_INLINE CORBA_Environment * CORBA_Environment::_duplicate CORBA_Environment *    x [static]
 

Some static methods that need to be defined in every pseudo object.

ACE_INLINE CORBA_Environment_ptr CORBA_Environment::_nil void    [static]
 

void CORBA_Environment::clear void   
 

Clear the exception.

CORBA_Environment & CORBA_Environment::default_environment void    [static]
 

const char * CORBA_Environment::exception_id void    const
 

return the repository ID for the exception.

int CORBA_Environment::exception_type void    const
 

Return if the exception is a user exception or a system exception.

CORBA_Environment & CORBA_Environment::operator= const CORBA_Environment &    rhs
 

Assingment.

void CORBA_Environment::print_exception const char *    info,
FILE *    f = stdout
const
 

Print the exception to output determined by f. This function is not CORBA compliant.


Friends And Related Function Documentation

friend class TAO_ORB_Core [friend]
 

Initialize using a well known ORB Core; this is intended for the bootstraping of the ORB_Core, not for general consumption.


Member Data Documentation

CORBA_Exception* exception void CORBA_Environment::const
 

CORBA::Environment retains ownership of the exception, this is contrary to the normal memory management rules in the C++ mapping, but actually mandated by the specification:.

"C++ Language Mapping" (formal/00-01-02). Section 1.27 Environment (page 1-113)

void exception CORBA_Exception* CORBA_Environment::ex
 

CORBA::Environment assumes ownership of the exception, this is contrary to the normal memory management rules in the C++ mapping, but actually mandated by the specification:.

"C++ Language Mapping" (formal/00-01-02). Section 1.27 Environment (page 1-113)

CORBA_Exception* CORBA_Environment::exception_ [private]
 

Pointer to the exception object contained in the environment.

CORBA_Environment* CORBA_Environment::previous_ [private]
 

The previous environment on the "default environment stack".


The documentation for this class was generated from the following files:
Generated on Thu Oct 10 18:18:57 2002 for TAO by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001