From 8e4f758cb1735c3ef0401194a2177479a9885fb0 Mon Sep 17 00:00:00 2001 From: XinyuHou Date: Fri, 13 Feb 2015 12:35:12 +0000 Subject: [PATCH] created new instance of arch in plugin #4313 --- 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, 18 insertions(+), 13 deletions(-) diff --git a/src/lib/arch/IArchPlugin.h b/src/lib/arch/IArchPlugin.h index 86a933f5..bcdfa8dd 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 and arch. + Initializes common parts like log. */ - virtual void init(void* log, void* arch) = 0; + virtual void init(void* log) = 0; //! Init the event part /*! diff --git a/src/lib/arch/unix/ArchPluginUnix.cpp b/src/lib/arch/unix/ArchPluginUnix.cpp index adf705da..66abcbf8 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*, void*); +typedef void (*initFunc)(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, void* arch) +ArchPluginUnix::init(void* log) { 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, arch); + initPlugin(log); } 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 092a1fd9..93abbb72 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* arch); + void init(void* log); 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 7bbbe1a6..a68d2797 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*, void*); +typedef void (*initFunc)(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, void* arch) +ArchPluginWindows::init(void* log) { PluginTable::iterator it; HINSTANCE lib; @@ -98,7 +98,7 @@ ArchPluginWindows::init(void* log, void* arch) lib = reinterpret_cast(it->second); initFunc initPlugin = (initFunc)GetProcAddress(lib, "init"); if (initPlugin != NULL) { - initPlugin(log, arch); + initPlugin(log); } 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 4a5e1257..39d3fd70 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* arch); + void init(void* log); 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 84e20b1e..62e30bb1 100644 --- a/src/lib/plugin/ns/ns.cpp +++ b/src/lib/plugin/ns/ns.cpp @@ -32,14 +32,15 @@ Log* g_log = NULL; extern "C" { void -init(void* log, void* arch) +init(void* log) { if (g_log == NULL) { g_log = new Log(reinterpret_cast(log)); } if (g_arch == NULL) { - g_arch = new Arch(reinterpret_cast(arch)); + g_arch = new Arch(); + g_arch->init(); } } @@ -100,6 +101,10 @@ 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 9e725166..358058db 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, void* arch); +NS_API void init(void* log); NS_API int initEvent(void (*sendEvent)(const char*, void*)); NS_API void* invoke(const char* command, void** args); NS_API void cleanup();