Timesheets-Server
Timesheets server
Načítám...
Vyhledávám...
Nebylo nic nalezeno
pluginstore.cpp
1#include "pluginstore.h"
2#include "pdebug.h"
3#include <QPluginLoader>
4#include <QCoreApplication>
5#include <QTimer>
6#include <QDir>
7#include <QStringList>
8
9using namespace Httpd;
10
11PluginStore *PluginStore::m_pluginStore = NULL;
12
13PluginStore::PluginStore(QObject *parent) : QObject(parent) {
14 m_pluginStore = this;
15 QTimer::singleShot(100, this, SLOT(init()));
16}
17
18
19PluginStore *PluginStore::pluginStore(QObject *parent) {
20 if (m_pluginStore == NULL) {
21 if (parent == NULL) {
22 qFatal("PluginStore::pluginStore(NULL)");
23 }
24 new PluginStore(parent);
25 }
26 return m_pluginStore;
27}
28
29
30void PluginStore::init() {
31 QStringList plugins;
32 QStringList plugindirs;
33 plugindirs << QCoreApplication::applicationDirPath()+"/plugins";
34 plugindirs << "/usr/lib/fotomonserver/plugins";
35 for (int i=0; i<plugindirs.size(); i++) {
36 QDir dir(plugindirs[i]);
37 PDEBUG << "path:" << dir.absolutePath();
38 QStringList files = dir.entryList(QStringList() << "lib*.so", QDir::Files);
39 for (int f=0; f<files.size(); f++) {
40 plugins << dir.absolutePath()+"/"+files[f];
41 }
42 }
43
44 for (int i=0; i<plugins.size(); i++) {
45 const QString& filename = plugins[i];
46 QPluginLoader *loader = new QPluginLoader(this);
47 loader->setFileName(filename);
48
49 if (!loader->load()) {
50 PDEBUG << filename << loader->errorString();
51 return;
52 }
53 QObject *x = loader->instance();
54 if (x == NULL) {
55 PDEBUG << "Loader instance() == NULL" << filename;
56 return;
57 }
58 PluginInterface *plugin = qobject_cast<PluginInterface *>(x);
59 if (plugin == NULL) {
60 PDEBUG << "plugin == NULL" << filename;
61 return;
62 }
63 m_plugins << plugin;
64
65 PDEBUG << "Loaded" << plugin->description();
66 }
67
68}
69
70
71QStringList PluginStore::pluginNames() const {
72 QStringList names;
73 for (int i=0; i<m_plugins.size(); i++) {
74 names << m_plugins[i]->description();
75 }
76 return names;
77}
78
79
80
Seznam načtených pluginů
Definition pluginstore.h:22
Interface pro pluginy serveru.
Jmenný prostor pro obsluhu konkrétních HTTP požadavků aplikace.