linuxdcpp-team team mailing list archive
-
linuxdcpp-team team
-
Mailing list archive
-
Message #05919
[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 3020: Plugins: host name retrieval, soft dependencies (Crise)
------------------------------------------------------------
revno: 3020
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Thu 2012-08-02 19:49:34 +0200
message:
Plugins: host name retrieval, soft dependencies (Crise)
modified:
dcpp/PluginApiImpl.cpp
dcpp/PluginApiImpl.h
dcpp/PluginDefs.h
dcpp/PluginManager.cpp
plugins/Dev/Dialog.cpp
plugins/Dev/Plugin.cpp
plugins/Dev/Util.cpp
plugins/Dev/Util.h
plugins/Script/Plugin.cpp
plugins/Script/Util.cpp
plugins/Script/Util.h
--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk
Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'dcpp/PluginApiImpl.cpp'
--- dcpp/PluginApiImpl.cpp 2012-07-07 16:36:41 +0000
+++ dcpp/PluginApiImpl.cpp 2012-08-02 17:49:34 +0000
@@ -37,6 +37,7 @@
#include "PluginManager.h"
#include "QueueManager.h"
#include "UserConnection.h"
+#include "version.h"
namespace dcpp {
@@ -70,6 +71,8 @@
HOOK_UI_PROCESS_CHAT_CMD
};
+static const char* hostName = APPNAME;
+
// lambdas are not used because certain compiler is being a pain about it (for now)
DCHooks PluginApiImpl::dcHooks = {
DCINTF_HOOKS_VER,
@@ -173,6 +176,10 @@
dcCore.query_interface = &PluginApiImpl::queryInterface;
dcCore.release_interface = &PluginApiImpl::releaseInterface;
+ // Core functions
+ dcCore.has_plugin = &PluginApiImpl::isLoaded;
+ dcCore.host_name = &PluginApiImpl::hostName;
+
// Interfaces (since these outlast any plugin they don't need to be explictly released)
dcCore.register_interface(DCINTF_HOOKS, &dcHooks);
dcCore.register_interface(DCINTF_CONFIG, &dcConfig);
@@ -211,6 +218,14 @@
return PluginManager::getInstance()->releaseInterface(hInterface) ? True : False;
}
+Bool PluginApiImpl::isLoaded(const char* guid) {
+ return PluginManager::getInstance()->isLoaded(guid) ? True : False;
+}
+
+const char* PluginApiImpl::hostName() {
+ return dcpp::hostName;
+}
+
// Functions for DCHook
hookHandle PluginApiImpl::createHook(const char* guid, DCHOOK defProc) {
return PluginManager::getInstance()->createHook(guid, defProc);
=== modified file 'dcpp/PluginApiImpl.h'
--- dcpp/PluginApiImpl.h 2012-07-02 18:13:18 +0000
+++ dcpp/PluginApiImpl.h 2012-08-02 17:49:34 +0000
@@ -56,6 +56,9 @@
static DCInterfacePtr DCAPI queryInterface(const char* guid, uint32_t version);
static Bool DCAPI releaseInterface(intfHandle hInterface);
+ static Bool DCAPI isLoaded(const char* guid);
+ static const char* DCAPI hostName();
+
// Functions for DCHooks
static hookHandle DCAPI createHook(const char* guid, DCHOOK defProc);
static Bool DCAPI destroyHook(hookHandle hHook);
=== modified file 'dcpp/PluginDefs.h'
--- dcpp/PluginDefs.h 2012-07-10 00:46:04 +0000
+++ dcpp/PluginDefs.h 2012-08-02 17:49:34 +0000
@@ -272,6 +272,12 @@
intfHandle (DCAPI *register_interface) (const char* guid, dcptr_t pInterface);
DCInterfacePtr (DCAPI *query_interface) (const char* guid, uint32_t version);
Bool (DCAPI *release_interface) (intfHandle hInterface);
+
+ /* Check if another plugin is loaded (for soft dependencies) */
+ Bool (DCAPI *has_plugin) (const char* guid);
+
+ /* Retrieve host application name */
+ const char* (DCAPI *host_name) ();
} DCCore, *DCCorePtr;
/* Plugin main function */
=== modified file 'dcpp/PluginManager.cpp'
--- dcpp/PluginManager.cpp 2012-07-29 22:46:08 +0000
+++ dcpp/PluginManager.cpp 2012-08-02 17:49:34 +0000
@@ -329,7 +329,7 @@
}
auto& hook = i->second;
{
- Lock l(hook->cs); // not strictly needed, for additions, due to characteristic of std::vector<..>
+ Lock l(hook->cs);
auto subscription = make_unique<HookSubscriber>();
auto pSub = subscription.get();
subscription->hookProc = hookProc;
=== modified file 'plugins/Dev/Dialog.cpp'
--- plugins/Dev/Dialog.cpp 2012-07-26 17:35:04 +0000
+++ plugins/Dev/Dialog.cpp 2012-08-02 17:49:34 +0000
@@ -53,7 +53,7 @@
void Dialog::create(HWND parent) {
if(hwnd) {
- MessageBox(parent, _T("The dev plugin hasn't been properly shut down; you better restart DC++"),
+ MessageBox(parent, Util::toT("The dev plugin hasn't been properly shut down; you better restart " + Util::appName).c_str(),
_T("Error creating the dev plugin's dialog"), MB_OK);
return;
}
=== modified file 'plugins/Dev/Plugin.cpp'
--- plugins/Dev/Plugin.cpp 2012-07-26 17:35:04 +0000
+++ plugins/Dev/Plugin.cpp 2012-08-02 17:49:34 +0000
@@ -69,12 +69,12 @@
return;
}
- Util::initialize(utils, config, logger);
+ Util::initialize(core->host_name(), utils, config, logger);
/*if(install) {
// Default settings
- Util::logMessage("Dev plugin installed, please restart the client to begin using the plugin.");
+ Util::logMessage("Dev plugin installed, please restart " + Util::appName + " to begin using the plugin.");
return;
}*/
=== modified file 'plugins/Dev/Util.cpp'
--- plugins/Dev/Util.cpp 2012-07-19 22:00:20 +0000
+++ plugins/Dev/Util.cpp 2012-08-02 17:49:34 +0000
@@ -21,6 +21,8 @@
#include "version.h"
+string Util::appName;
+
DCUtilsPtr Util::utils = nullptr;
DCConfigPtr Util::config = nullptr;
DCLogPtr Util::logger = nullptr;
=== modified file 'plugins/Dev/Util.h'
--- plugins/Dev/Util.h 2012-07-19 22:00:20 +0000
+++ plugins/Dev/Util.h 2012-08-02 17:49:34 +0000
@@ -45,7 +45,8 @@
class Util
{
public:
- static void initialize(DCUtilsPtr coreUtils, DCConfigPtr coreConfig, DCLogPtr coreLogger) {
+ static void initialize(string coreName, DCUtilsPtr coreUtils, DCConfigPtr coreConfig, DCLogPtr coreLogger) {
+ appName = std::move(coreName);
utils = coreUtils;
config = coreConfig;
logger = coreLogger;
@@ -95,6 +96,8 @@
static string fromT(const tstring& str);
static tstring toT(const string& str);
+ static string appName;
+
private:
static DCUtilsPtr utils;
static DCConfigPtr config;
=== modified file 'plugins/Script/Plugin.cpp'
--- plugins/Script/Plugin.cpp 2012-07-19 22:01:31 +0000
+++ plugins/Script/Plugin.cpp 2012-08-02 17:49:34 +0000
@@ -89,7 +89,7 @@
return;
}
- Util::initialize(utils, config, logger);
+ Util::initialize(core->host_name(), utils, config, logger);
if(install) {
// Default settings
@@ -97,7 +97,7 @@
Util::setConfig("LuaDebug", false);
Util::setConfig("FormatChat", true);
- Util::logMessage("Script plugin installed, please restart the client to begin using the plugin.");
+ Util::logMessage("Script plugin installed, please restart " + Util::appName + " to begin using the plugin.");
return;
}
=== modified file 'plugins/Script/Util.cpp'
--- plugins/Script/Util.cpp 2012-07-19 22:01:31 +0000
+++ plugins/Script/Util.cpp 2012-08-02 17:49:34 +0000
@@ -21,6 +21,8 @@
#include "version.h"
+string Util::appName;
+
DCUtilsPtr Util::utils = nullptr;
DCConfigPtr Util::config = nullptr;
DCLogPtr Util::logger = nullptr;
=== modified file 'plugins/Script/Util.h'
--- plugins/Script/Util.h 2012-07-19 22:01:31 +0000
+++ plugins/Script/Util.h 2012-08-02 17:49:34 +0000
@@ -45,7 +45,8 @@
class Util
{
public:
- static void initialize(DCUtilsPtr coreUtils, DCConfigPtr coreConfig, DCLogPtr coreLogger) {
+ static void initialize(string coreName, DCUtilsPtr coreUtils, DCConfigPtr coreConfig, DCLogPtr coreLogger) {
+ appName = std::move(coreName);
utils = coreUtils;
config = coreConfig;
logger = coreLogger;
@@ -100,6 +101,8 @@
static string fromUtf8(const string& str);
static string toUtf8(const string& str);
+ static string appName;
+
private:
static DCUtilsPtr utils;
static DCConfigPtr config;