diff options
Diffstat (limited to 'net/host_resolver_helper/dyn_lib_loader.cc')
-rw-r--r-- | net/host_resolver_helper/dyn_lib_loader.cc | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/net/host_resolver_helper/dyn_lib_loader.cc b/net/host_resolver_helper/dyn_lib_loader.cc deleted file mode 100644 index 043e81a..0000000 --- a/net/host_resolver_helper/dyn_lib_loader.cc +++ /dev/null @@ -1,76 +0,0 @@ -/** --------------------------------------------------------------------------- - Copyright (c) 2011, Code Aurora Forum. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Code Aurora Forum, Inc. nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED - WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS - BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -----------------------------------------------------------------------------**/ -#include "dyn_lib_loader.h" - -LibraryManager* LibraryManager::GetInstance() { - static LibraryManager mgr; - return &mgr; -} - -LibraryManager::~LibraryManager() { - for (LibDictionary::iterator it = libdict.begin(); it != libdict.end(); - it++) { - if (it->second) { - ReleaseLibraryModule(it->second); - } - } -} - -LibraryManager::MODULE_HANDLE_TYPE LibraryManager::GetLibraryHandleInternal(const std::string& libname) { - LibHandle& handle = libdict[libname]; - if (NULL == handle) { - //load module - handle = LoadLibraryModule(libname); - } - return handle; -} - -void* LibraryManager::GetSymbolInternal(const std::string& libname, const std::string& symbol) { - return LoadLibrarySymbol(GetLibraryHandleInternal(libname), symbol); -} - -void * LibraryManager::LoadLibrarySymbol(const MODULE_HANDLE_TYPE& lh, - const std::string& symname) { - void* symptr = NULL; - if (lh) { - symptr = dlsym(lh, symname.c_str()); - } - return symptr; -} - -LibraryManager::MODULE_HANDLE_TYPE LibraryManager::LoadLibraryModule(const std::string& libname) { - return dlopen(libname.c_str(), RTLD_LAZY); -} - -void LibraryManager::ReleaseLibraryModule(const MODULE_HANDLE_TYPE& lh) { - if (lh) { - dlclose(lh); - } -} - |