X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fp2_modules.cpp;fp=src%2Fp2_modules.cpp;h=0000000000000000000000000000000000000000;hb=4d01797cadc9a0ac99876553a6ee2ef3529a4d27;hp=6f1778b6bd855ae58fb094ad7d12c1d6f6fb04d7;hpb=495881ec0c538d38f680be81db9ac2b2bed84530;p=yazproxy-moved-to-github.git diff --git a/src/p2_modules.cpp b/src/p2_modules.cpp deleted file mode 100644 index 6f1778b..0000000 --- a/src/p2_modules.cpp +++ /dev/null @@ -1,77 +0,0 @@ - -#include - -#include "p2_modules.h" - -class P2_ModuleDLEntry { -public: - void *m_dl_handle; - P2_ModuleEntry *m_entry; - P2_ModuleDLEntry(); - ~P2_ModuleDLEntry(); -}; - -P2_ModuleDLEntry::P2_ModuleDLEntry() -{ - m_dl_handle = 0; - m_entry = 0; -} - -P2_ModuleDLEntry::~P2_ModuleDLEntry() -{ - if (m_dl_handle) - dlclose(m_dl_handle); -} - -P2_ModuleFactory::P2_ModuleFactory() -{ -} - -P2_ModuleFactory::~P2_ModuleFactory() -{ -} - -bool P2_ModuleFactory::add(P2_ModuleEntry *entry) -{ - P2_ModuleDLEntry *m = new P2_ModuleDLEntry(); - m->m_entry = entry; - m_modules.push_back(m); - return true; -} - -bool P2_ModuleFactory::add(const char *fname) -{ - void *dl_handle = dlopen(fname, RTLD_NOW|RTLD_GLOBAL); - if (!dl_handle) - return false; - - P2_ModuleEntry *entry = - reinterpret_cast - (dlsym(dl_handle, "p2_module_entry")); - if (!entry) - { - dlclose(dl_handle); - return false; - } - P2_ModuleDLEntry *m = new P2_ModuleDLEntry(); - m->m_dl_handle = dl_handle; - m->m_entry = entry; - m_modules.push_back(m); - return true; -} - -void *P2_ModuleFactory::get_interface(const char *name, int version) -{ - std::list::const_iterator it; - for (it = m_modules.begin(); it != m_modules.end(); it++) - { - P2_ModuleDLEntry *ent = *it; - if (!strcmp(ent->m_entry->name, name) && - ent->m_entry->version == version) - { - return ent->m_entry->interface_ptr; - } - } - return 0; -} -