summaryrefslogtreecommitdiff
path: root/TAO/tao/Environment.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Environment.h')
-rw-r--r--TAO/tao/Environment.h197
1 files changed, 0 insertions, 197 deletions
diff --git a/TAO/tao/Environment.h b/TAO/tao/Environment.h
deleted file mode 100644
index d3641c158f6..00000000000
--- a/TAO/tao/Environment.h
+++ /dev/null
@@ -1,197 +0,0 @@
-// This may look like C, but it's really -*- C++ -*-
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO
-//
-// = FILENAME
-// Environment.h
-//
-// = DESCRIPTION
-// Declare the CORBA_Environment class. Note that this header file
-// only requires a few forward declarations of CORBA classes, this
-// is *very* important because even the ORB needs to know about it;
-// make your changes with care. It is also a good idea trying to
-// minimize cross dependencies between header files.
-//
-// = AUTHOR
-// Carlos O'Ryan <coryan@cs.wustl.edu>
-//
-// ============================================================================
-
-#ifndef TAO_ENVIRONMENT_H
-#define TAO_ENVIRONMENT_H
-
-#include "tao/corbafwd.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-class TAO_ORB_Core;
-
-class TAO_Export CORBA_Environment
-{
- // = TITLE
- // CORBA_Environment
- //
- // = DESCRIPTION
- // 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.
-public:
- // = Initialization and termination methods.
- CORBA_Environment (void);
- // The default constructor, the environment will hold no exceptions.
-
- CORBA_Environment (const CORBA_Environment &ACE_TRY_ENV);
- // Copy constructor.
-
- CORBA_Environment &operator=(const CORBA_Environment &ACE_TRY_ENV);
- // Assingment.
-
- ~CORBA_Environment (void);
- // Destructor, release the exception.
-
- static CORBA_Environment * _duplicate (CORBA_Environment *);
- static CORBA_Environment * _nil (void);
- // Some static methods that need to be defined in every pseudo object
-
- CORBA_Exception* exception (void) const;
- // Return the exception. Caller must call <_incr_refcnf> in order
- // to keep the ptr.
-
- void exception (CORBA_Exception *ex);
- // Set the exception to <ex>, taking a reference on it.
-
- int exception_type (void) const;
- // Return if the exception is a user exception or a system
- // exception.
-
- const char *exception_id (void) const;
- // return the repository ID for the exception.
-
- void clear (void);
- // Clear the exception.
-
- void print_exception (const char *info,
- FILE *f=stdout) const;
- // Print the exception to output determined by f. This function is
- // not CORBA compliant.
-
- // = Obtain a default environment to use with TAO.
- static CORBA_Environment &default_environment (void);
-
- // = Reference counting.
- CORBA::ULong _incr_refcnt (void);
- CORBA::ULong _decr_refcnt (void);
-
-#if !defined(__GNUC__) || __GNUC__ > 2 || __GNUC_MINOR__ >= 8
- typedef CORBA_Environment_ptr _ptr_type;
- typedef CORBA_Environment_var _var_type;
-#endif /* __GNUC__ */
- // Useful for template programming.
-
-private:
-
- friend class TAO_ORB_Core;
- CORBA_Environment (TAO_ORB_Core *orb_core);
- // Initialize using a well known ORB Core; this is intended for the
- // bootstraping of the ORB_Core, not for general consumption.
-
- CORBA_Exception *exception_;
- // Pointer to the exception object contained in the environment.
-
- CORBA_Environment *previous_;
- // The previous environment on the "default environment stack".
-
- CORBA::ULong refcount_;
- // Reference counting.
-
- ACE_SYNCH_MUTEX refcount_lock_;
- // Protect the reference count.
-};
-
-class TAO_Export CORBA_Environment_var
-{
- // = TITLE
- // CORBA_Environment_var
- //
- // = DESCRIPTION
- // Provide for automatic storage deallocation on going out of
- // scope.
-public:
- CORBA_Environment_var (void);
- // default constructor
- CORBA_Environment_var (CORBA_Environment_ptr);
- CORBA_Environment_var (const CORBA_Environment_var &);
- // copy constructor
- ~CORBA_Environment_var (void);
- // destructor
-
- CORBA_Environment_var &operator= (CORBA_Environment_ptr);
- CORBA_Environment_var &operator= (const CORBA_Environment_var &);
- CORBA_Environment_ptr operator-> (void) const;
-
- operator const CORBA_Environment_ptr &() const;
- operator CORBA_Environment_ptr &();
- // in, inout, out, _retn
- CORBA_Environment_ptr in (void) const;
- CORBA_Environment_ptr &inout (void);
- CORBA_Environment_ptr &out (void);
- CORBA_Environment_ptr _retn (void);
- CORBA_Environment_ptr ptr (void) const;
-
-private:
- CORBA_Environment_ptr ptr_;
-};
-
-class TAO_Export CORBA_Environment_out
-{
- // = TITLE
- // CORBA_Environment_out
- //
- // = DESCRIPTION
- // The _out class for CORBA_Environment. This is used to help in
- // managing the out parameters.
-public:
- CORBA_Environment_out (CORBA_Environment_ptr &);
- CORBA_Environment_out (CORBA_Environment_var &);
- CORBA_Environment_out (const CORBA_Environment_out &);
- CORBA_Environment_out &operator= (const CORBA_Environment_out &);
- CORBA_Environment_out &operator= (CORBA_Environment_ptr);
- operator CORBA_Environment_ptr &();
- CORBA_Environment_ptr &ptr (void);
- CORBA_Environment_ptr operator-> (void);
-
-private:
- CORBA_Environment_ptr &ptr_;
-
- CORBA_Environment_out &operator= (const CORBA_Environment_var &);
- // Assignment from _var not allowed.
-};
-
-#if defined (__ACE_INLINE__)
-# include "tao/Environment.i"
-#endif /* __ACE_INLINE__ */
-
-#endif /* TAO_ENVIRONMENT_H */