#include <Environment.h>
Collaboration diagram for CORBA_Environment:
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 |
Return the contained CORBA::Exception. More... | |
void exception CORBA_Exception * | ex |
Set the contained CORBA::Exception to <ex>. More... | |
Private Methods | |
CORBA_Environment (TAO_ORB_Core *orb_core) | |
Private Attributes | |
CORBA_Exception * | exception_ |
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... |
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.
|
|
|
|
|
The default constructor, the environment will hold no exceptions.
|
|
Copy constructor.
|
|
Destructor, release the exception.
|
|
|
|
Some static methods that need to be defined in every pseudo object.
|
|
|
|
Clear the exception.
|
|
|
|
return the repository ID for the exception.
|
|
Return if the exception is a user exception or a system exception.
|
|
Assingment.
|
|
Print the exception to output determined by f. This function is not CORBA compliant.
|
|
Initialize using a well known ORB Core; this is intended for the bootstraping of the ORB_Core, not for general consumption.
|
|
Return the contained CORBA::Exception. 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) |
|
Set the contained CORBA::Exception to <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) |
|
Pointer to the exception object contained in the environment.
|
|
The previous environment on the "default environment stack".
|