24 #ifndef PLUGINMANAGER_H
25 #define PLUGINMANAGER_H
29 #include <QReadWriteLock>
34 class StorageChangeNotifierPlugin;
38 class PluginCbInterface;
42 class ClientPluginTest;
43 class ServerPluginTest;
44 class StoragePluginTest;
47 const QString STORAGEMAP_LOCATION =
"-storage.so";
48 const QString CLIENTMAP_LOCATION =
"-client.so";
49 const QString SERVERMAP_LOCATION =
"-server.so";
50 const QString STORAGECHANGENOTIFIERMAP_LOCATION =
"-changenotifier.so";
53 const QString OOP_CLIENT_SUFFIX =
"-client";
54 const QString OOP_SERVER_SUFFIX =
"-server";
57 #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
58 const QString DEFAULT_PLUGIN_PATH =
"/usr/lib/buteo-plugins-qt5/";
59 const QString DEFAULT_OOP_PLUGIN_PATH =
"/usr/lib/buteo-plugins-qt5/oopp";
61 const QString DEFAULT_PLUGIN_PATH =
"/usr/lib/buteo-plugins/";
65 const QString CREATE_FUNCTION =
"createPlugin";
68 const QString DESTROY_FUNCTION =
"destroyPlugin";
70 typedef ClientPlugin* (*FUNC_CREATE_CLIENT)(
const QString&,
73 typedef void (*FUNC_DESTROY_CLIENT)( ClientPlugin* );
75 typedef ServerPlugin* (*FUNC_CREATE_SERVER)(
const QString&,
78 typedef void (*FUNC_DESTROY_SERVER)( ServerPlugin* );
80 typedef StoragePlugin* (*FUNC_CREATE_STORAGE)(
const QString&);
81 typedef void (*FUNC_DESTROY_STORAGE)(StoragePlugin*);
83 typedef StorageChangeNotifierPlugin* (*FUNC_CREATE_STORAGECHANGENOTIFIER)(
const QString&);
84 typedef void (*FUNC_DESTROY_STORAGECHANGENOTIFIER)(StorageChangeNotifierPlugin*);
100 PluginManager(
const QString &aPluginPath = DEFAULT_PLUGIN_PATH );
141 const SyncProfile& aProfile,
158 const Profile& aProfile,
169 void onProcessFinished(
int exitCode, QProcess::ExitStatus exitStatus );
179 DllInfo() : iHandle( NULL ), iRefCount( 0 ) { }
187 void* loadDll(
const QString& aPath );
189 void* getDllHandle(
const QString& aPath );
191 void unloadDll(
const QString& aPath );
193 static bool killProcess(
const QString& aPath );
195 QProcess* startOOPPlugin(
const QString& aPath,
196 const QString& aPluginName,
197 const QString& aProfileName );
199 void stopOOPPlugin(
const QString& aPath );
213 QReadWriteLock iDllLock;
215 QString iProcBinaryPath;
217 #ifdef SYNCFW_UNIT_TESTS
218 friend class ClientPluginTest;
219 friend class ServerPluginTest;
220 friend class StoragePluginTest;
PluginManager(const QString &aPluginPath=DEFAULT_PLUGIN_PATH)
Constructor.
Definition: PluginManager.cpp:45
Manages plugins.
Definition: PluginManager.h:91
ServerPlugin * createServer(const QString &aPluginName, const Profile &aProfile, PluginCbInterface *aCbInterface)
Creates a new server plugin instance.
Definition: PluginManager.cpp:350
void destroyClient(ClientPlugin *aPlugin)
Destroys a client plugin instance.
Definition: PluginManager.cpp:304
Definition: AccountsHelper.h:31
~PluginManager()
Destructor.
Definition: PluginManager.cpp:63
void destroyStorage(StoragePlugin *aPlugin)
Destroys a storage plugin instance.
Definition: PluginManager.cpp:196
StorageChangeNotifierPlugin * createStorageChangeNotifier(const QString &aStorageName)
Creates a new storage change notifier plugin for the storage aStoragName.
Definition: PluginManager.cpp:77
Base class for server plugins.
Definition: ServerPlugin.h:36
void destroyStorageChangeNotifier(StorageChangeNotifierPlugin *aPlugin)
Destroys a storage change notifier plugin instance.
Definition: PluginManager.cpp:117
Interface which client and server plugins can use to communicate with synchronization daemon...
Definition: PluginCbInterface.h:38
Base class for client plugins.
Definition: ClientPlugin.h:37
Base class for storage plugins.
Definition: StoragePlugin.h:38
void destroyServer(ServerPlugin *aPlugin)
Destroys a server plugin.
Definition: PluginManager.cpp:419
StoragePlugin * createStorage(const QString &aPluginName)
Creates a new storage plugin instance.
Definition: PluginManager.cpp:155
ClientPlugin * createClient(const QString &aPluginName, const SyncProfile &aProfile, PluginCbInterface *aCbInterface)
Creates a new client plugin instance.
Definition: PluginManager.cpp:235
Implement this class to notify about changes in a specific storage - contacts/calendar/sms, or even custom ones like a facebook storage, if there's such a storage on the device.
Definition: StorageChangeNotifierPlugin.h:15