summaryrefslogtreecommitdiffstats
path: root/net/host_resolver_helper/dyn_lib_loader.h
diff options
context:
space:
mode:
Diffstat (limited to 'net/host_resolver_helper/dyn_lib_loader.h')
-rw-r--r--net/host_resolver_helper/dyn_lib_loader.h103
1 files changed, 0 insertions, 103 deletions
diff --git a/net/host_resolver_helper/dyn_lib_loader.h b/net/host_resolver_helper/dyn_lib_loader.h
deleted file mode 100644
index 6e3b0f0..0000000
--- a/net/host_resolver_helper/dyn_lib_loader.h
+++ /dev/null
@@ -1,103 +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.
- -----------------------------------------------------------------------------**/
-#ifndef __DYN_LIB_LOADER_H__
-#define __DYN_LIB_LOADER_H__
-
-#include <map>
-#include <string>
-#include <dlfcn.h>
-#include "dyn_lib_loader_decl.h"
-
-template<class T>
-inline T* GetInterfacePtr(void* funptr) {
- typedef T* (*InterfaceFunPtr)(void);
- if (NULL==funptr) {
- return NULL;
- }
- InterfaceFunPtr fun = (InterfaceFunPtr) (funptr);
- return fun();
-}
-
-//This macro is used by module which wishes to use the interface object exported by some other module
-// libname - is the dynamic library full name, interface_class - is the interface class for which
-// the object will be imported
-// EXAMPLE: Interface* ptr = GET_DYNAMIC_OBJECT_INTERFACE_PTR("libmy.so",Interface);
-#define GET_DYNAMIC_OBJECT_INTERFACE_PTR(__libname__,__interface_class__) \
- GetInterfacePtr<__interface_class__>(LibraryManager::GetFunctionPtr<__interface_class__>(__libname__,"Get" #__interface_class__ "Object"))
-
-//LibraryManager Connects to shared library reusing the lib handle
-//if called from mutiple places. Get retrieve exported functions and library handle.
-//This class is module level singletone.
-class LibraryManager {
-public:
-
- typedef void* MODULE_HANDLE_TYPE;
- template<class RET_TYPE>
- static RET_TYPE* GetFunctionPtr(const char* libname, const char* symbol) {
- return static_cast<RET_TYPE*>(GetInstance()->GetSymbolInternal(libname,
- symbol));
- }
-
- static MODULE_HANDLE_TYPE GetLibraryHandle(const char* libname) {
- return GetInstance()->GetLibraryHandleInternal(libname);
- }
-
-private:
- template<class MODULE_HANDLE_TYPE>
- class LibHandleType {
- public:
- LibHandleType() :
- handle(NULL) {
- }
- LibHandleType(MODULE_HANDLE_TYPE h) :
- handle(h) {
- }
- operator MODULE_HANDLE_TYPE() {
- return handle;
- }
- private:
- MODULE_HANDLE_TYPE handle;
- };
-
- typedef LibHandleType<MODULE_HANDLE_TYPE> LibHandle;
- typedef std::map<std::string, LibHandle> LibDictionary;
-
- static LibraryManager* GetInstance();
- LibraryManager() {}
- ~LibraryManager();
- void* GetSymbolInternal(const std::string& libname, const std::string& symbol);
- MODULE_HANDLE_TYPE GetLibraryHandleInternal(const std::string& libname);
- void * LoadLibrarySymbol(const MODULE_HANDLE_TYPE& lh, const std::string& symname);
- MODULE_HANDLE_TYPE LoadLibraryModule(const std::string& libname);
- void ReleaseLibraryModule(const MODULE_HANDLE_TYPE& lh);
-
- std::map<std::string, LibHandle> libdict;
-};
-
-#endif //__DYN_LIB_LOADER_H__