From 4014176d8edf5c569637a9e424a1668dc0a7fab8 Mon Sep 17 00:00:00 2001 From: Xinyu Hou Date: Fri, 13 Feb 2015 14:26:03 +0000 Subject: [PATCH] Revert "created new instance of arch in plugin #4313" This reverts commit 8e4f758cb1735c3ef0401194a2177479a9885fb0. --- src/lib/arch/IArchPlugin.h | 4 ++-- src/lib/arch/unix/ArchPluginUnix.cpp | 6 +++--- src/lib/arch/unix/ArchPluginUnix.h | 2 +- src/lib/arch/win32/ArchPluginWindows.cpp | 6 +++--- src/lib/arch/win32/ArchPluginWindows.h | 2 +- src/lib/plugin/ns/ns.cpp | 9 ++------- src/lib/plugin/ns/ns.h | 2 +- 7 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/lib/arch/IArchPlugin.h b/src/lib/arch/IArchPlugin.h index bcdfa8dd..86a933f5 100644 --- a/src/lib/arch/IArchPlugin.h +++ b/src/lib/arch/IArchPlugin.h @@ -48,9 +48,9 @@ public: //! Init the common parts /*! - Initializes common parts like log. + Initializes common parts like log and arch. */ - virtual void init(void* log) = 0; + virtual void init(void* log, void* arch) = 0; //! Init the event part /*! diff --git a/src/lib/arch/unix/ArchPluginUnix.cpp b/src/lib/arch/unix/ArchPluginUnix.cpp index 66abcbf8..adf705da 100644 --- a/src/lib/arch/unix/ArchPluginUnix.cpp +++ b/src/lib/arch/unix/ArchPluginUnix.cpp @@ -28,7 +28,7 @@ #include #include -typedef void (*initFunc)(void*); +typedef void (*initFunc)(void*, void*); typedef int (*initEventFunc)(void (*sendEvent)(const char*, void*)); typedef void* (*invokeFunc)(const char*, void*); typedef void (*cleanupFunc)(); @@ -104,13 +104,13 @@ ArchPluginUnix::unload() } void -ArchPluginUnix::init(void* log) +ArchPluginUnix::init(void* log, void* arch) { PluginTable::iterator it; for (it = m_pluginTable.begin(); it != m_pluginTable.end(); it++) { initFunc initPlugin = (initFunc)dlsym(it->second, "init"); if (initPlugin != NULL) { - initPlugin(log); + initPlugin(log, arch); } else { LOG((CLOG_DEBUG "no init function in %s", it->first.c_str())); diff --git a/src/lib/arch/unix/ArchPluginUnix.h b/src/lib/arch/unix/ArchPluginUnix.h index 93abbb72..092a1fd9 100644 --- a/src/lib/arch/unix/ArchPluginUnix.h +++ b/src/lib/arch/unix/ArchPluginUnix.h @@ -33,7 +33,7 @@ public: // IArchPlugin overrides void load(); void unload(); - void init(void* log); + void init(void* log, void* arch); void initEvent(void* eventTarget, IEventQueue* events); bool exists(const char* name); virtual void* invoke(const char* pluginName, diff --git a/src/lib/arch/win32/ArchPluginWindows.cpp b/src/lib/arch/win32/ArchPluginWindows.cpp index a68d2797..7bbbe1a6 100644 --- a/src/lib/arch/win32/ArchPluginWindows.cpp +++ b/src/lib/arch/win32/ArchPluginWindows.cpp @@ -27,7 +27,7 @@ #include #include -typedef void (*initFunc)(void*); +typedef void (*initFunc)(void*, void*); typedef int (*initEventFunc)(void (*sendEvent)(const char*, void*)); typedef void* (*invokeFunc)(const char*, void**); typedef void (*cleanupFunc)(); @@ -90,7 +90,7 @@ ArchPluginWindows::unload() } void -ArchPluginWindows::init(void* log) +ArchPluginWindows::init(void* log, void* arch) { PluginTable::iterator it; HINSTANCE lib; @@ -98,7 +98,7 @@ ArchPluginWindows::init(void* log) lib = reinterpret_cast(it->second); initFunc initPlugin = (initFunc)GetProcAddress(lib, "init"); if (initPlugin != NULL) { - initPlugin(log); + initPlugin(log, arch); } else { LOG((CLOG_DEBUG "no init function in %s", it->first.c_str())); diff --git a/src/lib/arch/win32/ArchPluginWindows.h b/src/lib/arch/win32/ArchPluginWindows.h index 39d3fd70..4a5e1257 100644 --- a/src/lib/arch/win32/ArchPluginWindows.h +++ b/src/lib/arch/win32/ArchPluginWindows.h @@ -36,7 +36,7 @@ public: // IArchPlugin overrides void load(); void unload(); - void init(void* log); + void init(void* log, void* arch); void initEvent(void* eventTarget, IEventQueue* events); bool exists(const char* name); void* invoke(const char* pluginName, diff --git a/src/lib/plugin/ns/ns.cpp b/src/lib/plugin/ns/ns.cpp index 62e30bb1..84e20b1e 100644 --- a/src/lib/plugin/ns/ns.cpp +++ b/src/lib/plugin/ns/ns.cpp @@ -32,15 +32,14 @@ Log* g_log = NULL; extern "C" { void -init(void* log) +init(void* log, void* arch) { if (g_log == NULL) { g_log = new Log(reinterpret_cast(log)); } if (g_arch == NULL) { - g_arch = new Arch(); - g_arch->init(); + g_arch = new Arch(reinterpret_cast(arch)); } } @@ -101,10 +100,6 @@ cleanup() if (g_secureListenSocket != NULL) { delete g_secureListenSocket; } - - if (g_arch != NULL) { - delete g_arch; - } } } \ No newline at end of file diff --git a/src/lib/plugin/ns/ns.h b/src/lib/plugin/ns/ns.h index 358058db..9e725166 100644 --- a/src/lib/plugin/ns/ns.h +++ b/src/lib/plugin/ns/ns.h @@ -33,7 +33,7 @@ extern "C" { -NS_API void init(void* log); +NS_API void init(void* log, void* arch); NS_API int initEvent(void (*sendEvent)(const char*, void*)); NS_API void* invoke(const char* command, void** args); NS_API void cleanup();