28 |
using std::cerr; |
using std::cerr; |
29 |
|
|
30 |
|
|
31 |
PluginManager::PluginManager() {} |
PluginManager::PluginManager() { |
32 |
|
connect = 0; |
33 |
|
} |
34 |
|
|
35 |
PluginManager::~PluginManager() { |
PluginManager::~PluginManager() { |
36 |
for(list<Data>::iterator it = active.begin(); it != active.end(); ++it) { |
for(list<Data>::iterator it = active.begin(); it != active.end(); ++it) { |
42 |
|
|
43 |
void PluginManager::loadPluginsDirectory(const char* dir_name) {} |
void PluginManager::loadPluginsDirectory(const char* dir_name) {} |
44 |
|
|
45 |
void PluginManager::loadPluginFile(const char* file_name) { |
Plugin* PluginManager::loadPluginFile(const char* file_name) { |
46 |
|
|
47 |
Data d; |
Data d; |
48 |
|
|
49 |
void* plug = dlopen(file_name, RTLD_LAZY); |
void* plug = dlopen(file_name, RTLD_LAZY); |
50 |
if (!plug) { |
if (!plug) { |
51 |
cerr << "Cannot load library: " << dlerror() << '\n'; |
cerr << "Cannot load library: " << dlerror() << '\n'; |
52 |
return; |
return 0; |
53 |
} |
} |
54 |
d.handler = plug; |
d.handler = plug; |
55 |
|
|
57 |
destroy_t* destroy_plugin = (destroy_t*) dlsym(plug, "destroy"); |
destroy_t* destroy_plugin = (destroy_t*) dlsym(plug, "destroy"); |
58 |
if (!create_plugin || !destroy_plugin) { |
if (!create_plugin || !destroy_plugin) { |
59 |
cerr << "Cannot load symbols: " << dlerror() << '\n'; |
cerr << "Cannot load symbols: " << dlerror() << '\n'; |
60 |
return ; |
return 0; |
61 |
} |
} |
62 |
|
|
63 |
Plugin* p = create_plugin(); |
Plugin* p = create_plugin(); |
64 |
d.plugin = p; |
d.plugin = p; |
65 |
|
|
66 |
active.push_back(d); |
active.push_back(d); |
67 |
|
|
68 |
|
return p; |
69 |
|
} |
70 |
|
|
71 |
|
void PluginManager::loadConnectionPluginFile(const char* file_name) { |
72 |
|
connect = (ConnectionPlugin*)loadPluginFile(file_name); |
73 |
|
if(!connect) exit(1); |
74 |
} |
} |
75 |
|
|
76 |
Plugin* PluginManager::connectionPlugin() { |
ConnectionPlugin* PluginManager::connectionPlugin() { |
77 |
return 0; |
return connect; |
78 |
} |
} |
79 |
|
|
80 |
Plugin* PluginManager::databasePlugin() { |
Plugin* PluginManager::databasePlugin() { |