summaryrefslogtreecommitdiff
path: root/ace/DLL.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ace/DLL.cpp')
-rw-r--r--ace/DLL.cpp220
1 files changed, 0 insertions, 220 deletions
diff --git a/ace/DLL.cpp b/ace/DLL.cpp
deleted file mode 100644
index a07a9ff5c99..00000000000
--- a/ace/DLL.cpp
+++ /dev/null
@@ -1,220 +0,0 @@
-// DLL.cpp
-// $Id$
-
-#include "ace/DLL.h"
-
-#include "ace/Log_Msg.h"
-#include "ace/ACE.h"
-#include "ace/DLL_Manager.h"
-
-ACE_RCSID(ace, DLL, "$Id$")
-
-// Default constructor. Also, by default, the object will be closed
-// before it is destroyed.
-
-ACE_DLL::ACE_DLL (int close_on_destruction)
- : open_mode_ (0),
- dll_name_ (0),
- close_on_destruction_ (close_on_destruction),
- dll_handle_ (0),
- error_ (0)
-{
- ACE_TRACE ("ACE_DLL::ACE_DLL (int)");
-}
-
-ACE_DLL::ACE_DLL (const ACE_DLL &rhs)
-{
- ACE_TRACE ("ACE_DLL::ACE_DLL (const ACE_DLL &)");
-
- // Have to do this since open() calls close()...
- this->dll_handle_ = 0;
- this->dll_name_ = 0;
- this->close_on_destruction_ = 1;
- this->error_ = 0;
-
- if (rhs.dll_name_)
- // This will automatically up the refcount.
- if (this->open (rhs.dll_name_, rhs.open_mode_, this->close_on_destruction_) != 0)
- ACE_ERROR ((LM_ERROR,
- ACE_LIB_TEXT ("ACE_DLL::copy_ctor: error: %s\n"),
- this->error ()));
-}
-
-// If the library name and the opening mode are specified than on
-// object creation the library is implicitly opened.
-
-ACE_DLL::ACE_DLL (const ACE_TCHAR *dll_name,
- int open_mode,
- int close_on_destruction)
- : open_mode_ (open_mode),
- dll_name_ (0),
- close_on_destruction_ (close_on_destruction),
- dll_handle_ (0),
- error_ (0)
-{
- ACE_TRACE ("ACE_DLL::ACE_DLL");
-
- if (this->open (dll_name, this->open_mode_, close_on_destruction) != 0)
- ACE_ERROR ((LM_ERROR,
- ACE_LIB_TEXT ("ACE_DLL::open: error calling open: %s\n"),
- this->error ()));
-}
-
-// The library is closed before the class gets destroyed depending on
-// the close_on_destruction value specified which is stored in
-// close_on_destruction_.
-
-ACE_DLL::~ACE_DLL (void)
-{
- ACE_TRACE ("ACE_DLL::~ACE_DLL");
-
- this->close ();
-}
-
-// This method opens the library based on the mode specified using the
-// ACE_SHLIB_HANDLE which is obtained on making the ACE_OS::dlopen call.
-// The default mode is:
-// RTLD_LAZY Only references to data symbols are relocate when the
-// object is first loaded.
-// The other modes include:
-// RTLD_NOW All necessary relocations are performed when the
-// object is first loaded.
-// RTLD_GLOBAL The object symbols are made available for the
-// relocation processing of any other object.
-
-int
-ACE_DLL::open (const ACE_TCHAR *dll_filename,
- int open_mode,
- int close_on_destruction)
-{
- ACE_TRACE ("ACE_DLL::open");
-
- return open_i (dll_filename, open_mode, close_on_destruction);
-}
-
-int
-ACE_DLL::open_i (const ACE_TCHAR *dll_filename,
- int open_mode,
- int close_on_destruction,
- ACE_SHLIB_HANDLE handle)
-{
- ACE_TRACE ("ACE_DLL::open_i");
-
- this->error_ = 0;
-
- if (!dll_filename)
- ACE_ERROR_RETURN ((LM_ERROR,
- ACE_LIB_TEXT ("ACE_DLL::open_i: dll_name: %s\n"),
- this->dll_name_),
- -1);
-
- if (this->dll_handle_)
- {
- // If we have a good handle and its the same name, just return.
- if (ACE_OS_String::strcmp (this->dll_name_, dll_filename) == 0)
- return 0;
- else
- this->close ();
- }
- if (!this->dll_name_)
- {
- this->dll_name_ = ACE::strnew (dll_filename);
- }
- this->open_mode_ = open_mode;
- this->close_on_destruction_ = close_on_destruction;
-
- this->dll_handle_ = ACE_DLL_Manager::instance()->open_dll (this->dll_name_,
- this->open_mode_,
- handle);
-
- if (!this->dll_handle_)
- this->error_ = 1;
-
- return this->error_ ? -1 : 0;
-}
-
-// The symbol refernce of the name specified is obtained.
-
-void *
-ACE_DLL::symbol (const ACE_TCHAR *sym_name, int ignore_errors)
-{
- ACE_TRACE ("ACE_DLL::symbol");
-
- this->error_ = 0;
-
- void *sym = this->dll_handle_->symbol (sym_name, ignore_errors);
-
- if (!sym)
- this->error_ = 1;
-
- return sym;
-}
-
-// The library is closed using the ACE_SHLIB_HANDLE obejct. i.e. The
-// shared object is now disassociated form the current process.
-
-int
-ACE_DLL::close (void)
-{
- ACE_TRACE ("ACE_DLL::close");
- int retval = 0;
-
- if (this->close_on_destruction_ && this->dll_name_ &&
- (retval = ACE_DLL_Manager::instance ()->close_dll (this->dll_name_)) != 0)
- this->error_ = 1;
-
- // Even if close_dll() failed, go ahead and cleanup.
- this->dll_handle_ = 0;
- delete[] this->dll_name_;
- this->dll_name_ = 0;
- this->close_on_destruction_ = 0;
-
- return retval;
-}
-
-// This method is used return the last error of a library operation.
-
-ACE_TCHAR *
-ACE_DLL::error (void) const
-{
- ACE_TRACE ("ACE_DLL::error");
- if (this->error_)
- return ACE_const_cast (ACE_TCHAR *,
- ACE_LIB_TEXT ("Error: check log for details."));
-
- return 0;
-}
-
-// Return the handle to the user either temporarily or forever, thus
-// orphaning it. If 0 means the user wants the handle forever and if 1
-// means the user temporarily wants to take the handle.
-
-ACE_SHLIB_HANDLE
-ACE_DLL::get_handle (int become_owner) const
-{
- ACE_TRACE ("ACE_DLL::get_handle");
-
- ACE_SHLIB_HANDLE handle = ACE_SHLIB_INVALID_HANDLE;
-
- if (this->dll_handle_)
- handle = this->dll_handle_->get_handle (become_owner);
-
- return handle;
-}
-
-// Set the handle for the DLL. By default, the object will be closed
-// before it is destroyed.
-
-int
-ACE_DLL::set_handle (ACE_SHLIB_HANDLE handle,
- int close_on_destruction)
-{
- ACE_TRACE ("ACE_DLL::set_handle");
-
- // Create a unique name. Note that this name is only quaranteed
- // to be unique for the life of this object.
- ACE_TCHAR temp[ACE_UNIQUE_NAME_LEN];
- ACE_OS::unique_name (this, temp, ACE_UNIQUE_NAME_LEN);
-
- return this->open_i (temp, 1, close_on_destruction, handle);
-}