From a9bd040c2f8485e79135afd4b665d6dc4ddc3281 Mon Sep 17 00:00:00 2001 From: Younghyun Joo Date: Mon, 2 Mar 2015 19:10:29 +0900 Subject: [PATCH] [PPM] Modify Protocol Plugin Manager for Android platform 1. Modify FelixAdapter for android support 2. Modify PluginManagerImpl to use FelixAdapter Change-Id: I14481ddd75913e3eeddef00febd1e8f1c2476aef Signed-off-by: Younghyun Joo Reviewed-on: https://gerrit.iotivity.org/gerrit/423 Tested-by: jenkins-iotivity Reviewed-by: yunhee.hwang Reviewed-by: Uze Choi --- service/SConscript | 2 +- service/protocol-plugin/plugin-manager/SConscript | 10 +- .../protocol-plugin/plugin-manager/src/Config.cpp | 2 +- .../plugin-manager/src/FelixAdapter.cpp | 195 +++++++++++++++++++-- .../plugin-manager/src/FelixAdapter.h | 8 +- .../plugin-manager/src/PluginManager.cpp | 6 +- .../plugin-manager/src/PluginManagerImpl.cpp | 99 +++++++---- .../plugin-manager/src/PluginManagerImpl.h | 17 +- .../protocol-plugin/sample-app/linux/SConscript | 5 +- 9 files changed, 279 insertions(+), 65 deletions(-) diff --git a/service/SConscript b/service/SConscript index e8d873e..1ea7f78 100644 --- a/service/SConscript +++ b/service/SConscript @@ -15,7 +15,7 @@ if target_os != 'arduino': # Build protocol plugin project # protocol-plugin use 'inotify', this feature isn't support by MAC OSX - if target_os not in ['darwin', 'ios', 'android']: + if target_os not in ['darwin', 'ios']: SConscript('protocol-plugin/SConscript') # Build notification manager project diff --git a/service/protocol-plugin/plugin-manager/SConscript b/service/protocol-plugin/plugin-manager/SConscript index e2d0cf6..5f074fa 100644 --- a/service/protocol-plugin/plugin-manager/SConscript +++ b/service/protocol-plugin/plugin-manager/SConscript @@ -1,7 +1,7 @@ ## # plugin-manager project build script ## - +import os Import('env') # Add third party libraries @@ -24,8 +24,8 @@ if target_os not in ['windows', 'winrt']: '-fpermissive', '-Wsign-compare']) if target_os == 'android': - plugin_manager_env.AppendUnique(CXXFLAGS = ['-frtti', '-fexceptions']) - plugin_manager_env.AppendUnique(LIBS = ['boost_thread-gcc-mt-1_49', 'gnustl_static']) + plugin_manager_env.AppendUnique(CXXFLAGS = ['-frtti', '-fexceptions', '-DANDROID']) + plugin_manager_env.AppendUnique(LIBS = ['boost_thread', 'boost_system', 'gnustl_shared', 'log']) plugin_manager_env.AppendUnique(CPPDEFINES = ['CP_C_API=CP_EXPORT', 'CP_HOST=\"\\"'+env.get('TARGET_OS')+'\\"\"', @@ -48,11 +48,13 @@ ppm = plugin_manager_env.StaticLibrary('ppm', ppm_src) pmimpl_src = [ 'src/CpluffAdapter.cpp', - 'src/FelixAdapter.cpp', 'src/Plugin.cpp', 'src/PluginManagerImpl.cpp', 'src/Config.cpp'] +if target_os == 'android': + pmimpl_src += ['src/FelixAdapter.cpp'] + pmimpl_env = plugin_manager_env.Clone() pmimpl_env.PrependUnique(CCFLAGS = ['-fPIC']) pmimpl_env.PrependUnique(LIBS = File(env.get('BUILD_DIR') + '/libcpluff.a')) diff --git a/service/protocol-plugin/plugin-manager/src/Config.cpp b/service/protocol-plugin/plugin-manager/src/Config.cpp index b8c5941..f09565e 100644 --- a/service/protocol-plugin/plugin-manager/src/Config.cpp +++ b/service/protocol-plugin/plugin-manager/src/Config.cpp @@ -34,7 +34,7 @@ Config *Config::s_configinstance = NULL; Config::Config() { - if (loadConfigFile("./pluginmanager.xml") != PM_S_OK) + if (loadConfigFile("/storage/emulated/0/Download/pluginmanager.xml") != PM_S_OK) { fprintf(stderr, "PM Configuration file is not exist current Folder.\n" ); exit(EXIT_FAILURE); diff --git a/service/protocol-plugin/plugin-manager/src/FelixAdapter.cpp b/service/protocol-plugin/plugin-manager/src/FelixAdapter.cpp index 50a92e2..ae28ef5 100644 --- a/service/protocol-plugin/plugin-manager/src/FelixAdapter.cpp +++ b/service/protocol-plugin/plugin-manager/src/FelixAdapter.cpp @@ -23,13 +23,16 @@ /// @brief #include "FelixAdapter.h" +#include using namespace OIC; FelixAdapter *FelixAdapter::s_pinstance; -FelixAdapter::FelixAdapter() +FelixAdapter::FelixAdapter(JavaVM *args) { + jvm = args; + config = Config::Getinstance(); std::string pluginpath = config->getPluginPath(); if (pluginpath != "") @@ -38,7 +41,7 @@ FelixAdapter::FelixAdapter() } else { - fprintf(stderr, "Pluing path is not exist\n"); + fprintf(stderr, "Pluin path does not exist\n"); pluginpath = ""; } registerAllPlugin(pluginpath); @@ -46,7 +49,9 @@ FelixAdapter::FelixAdapter() FelixAdapter::~FelixAdapter(void) { + s_pinstance->deleteinstance(); + s_pinstance = NULL; } int FelixAdapter::installPlugin(const std::string path) @@ -66,32 +71,166 @@ int FelixAdapter::loadPluginInfoToManager(const std::string path) int FelixAdapter::registerPlugin(const std::string path) { - return 1; + int flag = FALSE; + + if (path == "") + { + printf("FelixAdapter path == null\n"); + return flag; + } + + JNIEnv *env; + jvm->GetEnv((void**)&env, JNI_VERSION_1_6); + + jstring jpath = env->NewStringUTF(path.c_str()); + jclass cls = env->FindClass("org/oic/android/FelixManager"); + jmethodID mid = env->GetStaticMethodID(cls, "registerPlugin", "(Ljava/lang/String;)I"); + + flag = (int)env->CallStaticIntMethod(cls, mid, jpath); + return flag; } int FelixAdapter::registerAllPlugin(const std::string path) { - return 1; + int flag = FALSE; + + if (path == "") + { + printf("FelixAdapter path == null\n"); + return flag; + } + + + JNIEnv *env; + jvm->GetEnv((void**)&env, JNI_VERSION_1_6); + + jstring jpath = env->NewStringUTF(path.c_str()); + jclass cls = env->FindClass("org/oic/android/FelixManager"); + jmethodID mid = env->GetStaticMethodID(cls, "registerAllPlugin", "(Ljava/lang/String;)I"); + + flag = (int)env->CallStaticIntMethod(cls, mid, jpath); + + return flag; } int FelixAdapter::unregisterPlugin(Plugin *const plugin) { - return 1; + JNIEnv *env; + jvm->GetEnv((void**)&env, JNI_VERSION_1_6); + + const char *cpath = plugin->getID().c_str(); + jstring jpath = env->NewStringUTF(cpath); + jclass cls = env->FindClass("org/oic/android/FelixManager"); + jmethodID mid = env->GetStaticMethodID(cls, "unregisterPlugin", "(Ljava/lang/String;)I"); + + return (int)env->CallStaticIntMethod(cls, mid, jpath); } int FelixAdapter::unregisterAllPlugin(void) { - return 1; + JNIEnv *env; + jvm->GetEnv((void**)&env, JNI_VERSION_1_6); + + jclass cls = env->FindClass("org/oic/android/FelixManager"); + jmethodID mid = env->GetStaticMethodID(cls, "unregisterAllPlugin", "()I"); + + return (int)env->CallStaticIntMethod(cls, mid); } std::vector &FelixAdapter::getAllPlugins(void) { + JNIEnv *env; + jvm->GetEnv((void**)&env, JNI_VERSION_1_6); + + + jclass cls = env->FindClass("org/oic/android/FelixManager"); + jmethodID mid = env->GetStaticMethodID(cls, "getAllPlugins", "()[Lorg/osgi/framework/Bundle;"); + jobjectArray jresultArray = (jobjectArray)env->CallStaticObjectMethod(cls, mid); + jint size = env->GetArrayLength(jresultArray); + m_plugins.clear(); + + for(int i = 0; i < (int)size; i++) { + Plugin *plugin = new Plugin; + + jobject result = env->GetObjectArrayElement(jresultArray, i); + cls = env->GetObjectClass(result); + plugin->setValue("Language", "JAVA"); + mid = env->GetMethodID(cls, "getSymbolicName", "()Ljava/lang/String;"); + jstring jid = (jstring)env->CallObjectMethod(result, mid); + std::string id = env->GetStringUTFChars(jid, 0); + plugin->setValue("Id", id); + mid = env->GetMethodID(cls, "getVersion", "()Lorg/osgi/framework/Version;"); + jobject jversion_object = env->CallObjectMethod(result, mid); + jclass vcls = env->GetObjectClass(jversion_object); + mid = env->GetMethodID(vcls, "toString", "()Ljava/lang/String;"); + jstring jversion = (jstring)env->CallObjectMethod(jversion_object, mid); + std::string version = env->GetStringUTFChars(jversion, 0); + plugin->setValue("Version", version); + cls = env->FindClass("org/oic/android/FelixManager"); + mid = env->GetStaticMethodID(cls, "getValue", "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"); + std::string key = "Name"; + jstring jname = (jstring)env->CallStaticObjectMethod(cls, mid, jid, env->NewStringUTF(key.c_str())); + std::string name = env->GetStringUTFChars(jname, 0); + plugin->setValue("Name", name); + key = "ResourceType"; + jstring jresourcetype = (jstring)env->CallStaticObjectMethod(cls, mid, jid, env->NewStringUTF(key.c_str())); + std::string resourcetype = env->GetStringUTFChars(jresourcetype, 0); + //LOGD("ResourceType:"); + plugin->setValue("ResourceType", resourcetype); + m_plugins.push_back(*plugin); + } + return m_plugins; } std::vector *FelixAdapter::findPlugins(const std::string key, const std::string value) { - return nullptr; + JNIEnv *env; + jvm->GetEnv((void**)&env, JNI_VERSION_1_6); + + jstring jkey = env->NewStringUTF(key.c_str()); + jstring jvalue = env->NewStringUTF(value.c_str()); + + jclass cls = env->FindClass("org/oic/android/FelixManager"); + jmethodID mid = env->GetStaticMethodID(cls, "findPlugins", "(Ljava/lang/String;Ljava/lang/String;)[Lorg/osgi/framework/Bundle;"); + + jobjectArray jresultArray = (jobjectArray)env->CallStaticObjectMethod(cls, mid, (jstring)jkey, (jstring)jvalue); + + jint size = env->GetArrayLength(jresultArray); + + std::vector *re_plugins; + re_plugins = new std::vector; + + for(int i = 0; i < (int)size; i++) { + Plugin *plugin = new Plugin; + + jobject result = env->GetObjectArrayElement(jresultArray, i); + cls = env->GetObjectClass(result); + plugin->setValue("Language", "JAVA"); + mid = env->GetMethodID(cls, "getSymbolicName", "()Ljava/lang/String;"); + jstring jid = (jstring)env->CallObjectMethod(result, mid); + std::string id = env->GetStringUTFChars(jid, 0); + plugin->setValue("Id", id); + mid = env->GetMethodID(cls, "getVersion", "()Lorg/osgi/framework/Version;"); + jobject jversion_object = env->CallObjectMethod(result, mid); + jclass vcls = env->GetObjectClass(jversion_object); + mid = env->GetMethodID(vcls, "toString", "()Ljava/lang/String;"); + jstring jversion = (jstring)env->CallObjectMethod(jversion_object, mid); + std::string version = env->GetStringUTFChars(jversion, 0); + plugin->setValue("Version", version); + cls = env->FindClass("org/oic/android/FelixManager"); + mid = env->GetStaticMethodID(cls, "getValue", "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"); + std::string key = "Name"; + jstring jname = (jstring)env->CallStaticObjectMethod(cls, mid, jid, env->NewStringUTF(key.c_str())); + std::string name = env->GetStringUTFChars(jname, 0); + plugin->setValue("Name", name); + key = "ResourceType"; + jstring jresourcetype = (jstring)env->CallStaticObjectMethod(cls, mid, jid, env->NewStringUTF(key.c_str())); + //LOGD("ResourceType:"); + m_plugins.push_back(*plugin); + } + + return re_plugins; } /* Plugin *FelixAdapter::getPlugin(const std::string plugID) @@ -112,17 +251,41 @@ void FelixAdapter::printPluginList(cp_plugin_info_t **plugins) int FelixAdapter::start(Plugin *const plugin, void *const arg) { - return TRUE; + JNIEnv *env; + jvm->GetEnv((void**)&env, JNI_VERSION_1_6); + + const char *cid = plugin->getID().c_str(); + jstring jid = env->NewStringUTF(cid); + jclass cls = env->FindClass("org/oic/android/FelixManager"); + jmethodID mid = env->GetStaticMethodID(cls, "start", "(Ljava/lang/String;)I"); + + return (int)env->CallStaticIntMethod(cls, mid, jid); } int FelixAdapter::stop(Plugin *const plugin) { - return TRUE; + JNIEnv *env; + jvm->GetEnv((void**)&env, JNI_VERSION_1_6); + + const char *cid = plugin->getID().c_str(); + jstring jid = env->NewStringUTF(cid); + jclass cls = env->FindClass("org/oic/android/FelixManager"); + jmethodID mid = env->GetStaticMethodID(cls, "stop", "(Ljava/lang/String;)I"); + + return (int)env->CallStaticIntMethod(cls, mid, jid); } bool FelixAdapter::isStarted(Plugin *plugin) { - return FALSE; + JNIEnv *env; + jvm->GetEnv((void**)&env, JNI_VERSION_1_6); + + const char *cid = plugin->getID().c_str(); + jstring jid = env->NewStringUTF(cid); + jclass cls = env->FindClass("org/oic/android/FelixManager"); + jmethodID mid = env->GetStaticMethodID(cls, "isStarted", "(Ljava/lang/String;)Z"); + + return (bool)env->CallStaticBooleanMethod(cls, mid, jid); } /* void FelixAdapter::observePluginPath(void *str) @@ -132,5 +295,13 @@ void FelixAdapter::observePluginPath(void *str) */ const std::string FelixAdapter::getState(const std::string plugID) { - return ""; -} \ No newline at end of file + JNIEnv *env; + jvm->GetEnv((void**)&env, JNI_VERSION_1_6); + + jstring jplugID = env->NewStringUTF(plugID.c_str()); + jclass cls = env->FindClass("org/oic/android/FelixManager"); + jmethodID mid = env->GetStaticMethodID(cls, "getState", "(Ljava/lang/String;)Ljava/lang/String;"); + + jstring jresult = (jstring)env->CallStaticObjectMethod(cls, mid, jplugID); + return env->GetStringUTFChars(jresult, 0); +} diff --git a/service/protocol-plugin/plugin-manager/src/FelixAdapter.h b/service/protocol-plugin/plugin-manager/src/FelixAdapter.h index 7f03f7f..0fcb98c 100644 --- a/service/protocol-plugin/plugin-manager/src/FelixAdapter.h +++ b/service/protocol-plugin/plugin-manager/src/FelixAdapter.h @@ -35,6 +35,7 @@ #include #include #include +#include #include "Plugin.h" #include "Config.h" @@ -166,11 +167,11 @@ namespace OIC * * @return OICPluginManager pointer Address. */ - static FelixAdapter *Getinstance() + static FelixAdapter *Getinstance(void *args=NULL) { if (NULL == s_pinstance) { - s_pinstance = new FelixAdapter(); + s_pinstance = new FelixAdapter((JavaVM *)args); } return s_pinstance; @@ -179,6 +180,7 @@ namespace OIC private: + JavaVM *jvm; Config *config; typedef std::map File_list; std::vector m_plugins; @@ -198,7 +200,7 @@ namespace OIC * During construction time, all plugins under the root plugin path will be loaded. * */ - FelixAdapter(); + FelixAdapter(JavaVM *); /** * Virtual destructor diff --git a/service/protocol-plugin/plugin-manager/src/PluginManager.cpp b/service/protocol-plugin/plugin-manager/src/PluginManager.cpp index 0f4034f..551d2d8 100644 --- a/service/protocol-plugin/plugin-manager/src/PluginManager.cpp +++ b/service/protocol-plugin/plugin-manager/src/PluginManager.cpp @@ -35,10 +35,10 @@ PluginManager::PluginManager() fprintf(stderr, "%s\n", dlerror()); exit(EXIT_FAILURE); } - PluginManagerImpl* (*create)(); - create = (PluginManagerImpl * (*)())dlsym(handle, "create_object"); + PluginManagerImpl* (*create)(void*); + create = (PluginManagerImpl * (*)(void*))dlsym(handle, "create_object"); destroy = (void (*)(PluginManagerImpl *))dlsym(handle, "destroy_object"); - pluginManagerImpl = (PluginManagerImpl *)create(); + pluginManagerImpl = (PluginManagerImpl *)create(NULL); } PluginManager::~PluginManager(void) diff --git a/service/protocol-plugin/plugin-manager/src/PluginManagerImpl.cpp b/service/protocol-plugin/plugin-manager/src/PluginManagerImpl.cpp index 1f527fb..ce45e22 100644 --- a/service/protocol-plugin/plugin-manager/src/PluginManagerImpl.cpp +++ b/service/protocol-plugin/plugin-manager/src/PluginManagerImpl.cpp @@ -26,12 +26,12 @@ using namespace OIC; -PluginManagerImpl *PluginManagerImpl::s_pinstance = nullptr; +PluginManagerImpl *PluginManagerImpl::s_pinstance = NULL; -extern "C" PluginManagerImpl *create_object() +extern "C" PluginManagerImpl *create_object(void *args) { PluginManagerImpl *newobj; - newobj = new PluginManagerImpl; + newobj = new PluginManagerImpl(args); return newobj; } @@ -40,10 +40,15 @@ extern "C" void destroy_object( PluginManagerImpl *object ) delete object; } -PluginManagerImpl::PluginManagerImpl() +PluginManagerImpl::PluginManagerImpl(void* args) { cppm = CpluffAdapter::Getinstance(); - javappm = FelixAdapter::Getinstance(); + #ifdef ANDROID + if(args) + javappm = FelixAdapter::Getinstance(args); + else + javappm = NULL; + #endif refreshPluginInfo(); } @@ -56,7 +61,10 @@ int PluginManagerImpl::registerPlugin(std::string path) { int flag = 0; flag = cppm->registerPlugin(path); - flag = javappm->registerPlugin(path); + #ifdef ANDROID + if(javappm) + flag = javappm->registerPlugin(path); + #endif refreshPluginInfo(); return flag; } @@ -65,7 +73,12 @@ int PluginManagerImpl::registerAllPlugin(std::string path) { int flag = 0; flag = cppm->registerAllPlugin(path); - flag = javappm->registerAllPlugin(path); + + #ifdef ANDROID + if(javappm) + flag = javappm->registerAllPlugin(path); + #endif + refreshPluginInfo(); return flag; } @@ -87,10 +100,12 @@ int PluginManagerImpl::unregisterPlugin(std::string id) } else if (!m_plugins[i].getValueByAttribute("Language").compare("JAVA")) { - if ((flag = javappm->unregisterPlugin(&m_plugins[i]))) - { - m_plugins.erase(m_plugins.begin() + i); - } + #ifdef ANDROID + if ((flag = javappm->unregisterPlugin(&m_plugins[i]))) + { + m_plugins.erase(m_plugins.begin() + i); + } + #endif } } } @@ -102,7 +117,10 @@ int PluginManagerImpl::unregisterAllPlugin() { int flag = 0; flag = cppm->unregisterAllPlugin(); - flag = javappm->unregisterAllPlugin(); + #ifdef ANDROID + if(javappm) + flag = javappm->unregisterAllPlugin(); + #endif m_plugins.clear(); return flag; } @@ -124,7 +142,6 @@ int PluginManagerImpl::rescanPlugin() return result; } - std::vector &PluginManagerImpl::getAllPlugins(void) { return m_plugins; @@ -156,7 +173,7 @@ Plugin *PluginManagerImpl::getPlugin(const std::string pluginID) } } - return nullptr; + return NULL; } int PluginManagerImpl::startPlugins(const std::string key, const std::string value) { @@ -190,14 +207,14 @@ int PluginManagerImpl::startPlugins(const std::string key, const std::string val } } delete(resource_plugin); - resource_plugin = nullptr; + resource_plugin = NULL; return flag; } int PluginManagerImpl::startPlugins(Plugin *const plugin) { int flag = FALSE; - void *arg = nullptr; + void *arg = NULL; flag = startbyPlatform(plugin, arg); @@ -239,7 +256,7 @@ int PluginManagerImpl::stopPlugins(const std::string key, const std::string valu } } delete(resource_plugin); - resource_plugin = nullptr; + resource_plugin = NULL; return flag; } @@ -266,7 +283,10 @@ int PluginManagerImpl::startbyPlatform(Plugin *const plugin, void *const arg) } else if (!m_plugins[i].getValueByAttribute("Language").compare("JAVA")) { - flag = javappm->start(plugin, arg); + #ifdef ANDROID + if(javappm) + flag = javappm->start(plugin, arg); + #endif } } } @@ -292,7 +312,10 @@ int PluginManagerImpl::stopbyPlatform(Plugin *const plugin) } else if (!m_plugins[i].getValueByAttribute("Language").compare("JAVA")) { - flag = javappm->stop(plugin); + #ifdef ANDROID + if(javappm) + flag = javappm->stop(plugin); + #endif } } } @@ -312,12 +335,15 @@ bool PluginManagerImpl::isStarted(Plugin *plugin) flag = TRUE; return flag; } - - if (javappm->isStarted(plugin)) - { - flag = TRUE; - return flag; - } + #ifdef ANDROID + if(javappm) { + if (javappm->isStarted(plugin)) + { + flag = TRUE; + return flag; + } + } + #endif return flag; } @@ -335,7 +361,10 @@ std::string PluginManagerImpl::getState(std::string plugID) } else if (!m_plugins[i].getValueByAttribute("Language").compare("JAVA")) { - str = javappm->getState(plugID); + #ifdef ANDROID + if(javappm) + str = javappm->getState(plugID); + #endif } } } @@ -348,13 +377,17 @@ std::vector PluginManagerImpl::refreshPluginInfo() m_plugins.clear(); m_plugins = cppm->getAllPlugins(); - std::vector java_plugins = javappm->getAllPlugins(); - int size = java_plugins.size(); + #ifdef ANDROID + if(javappm) { + std::vector java_plugins = javappm->getAllPlugins(); + int size = java_plugins.size(); - for (int i = 0 ; i < size ; i++) - { - m_plugins.push_back(java_plugins[i]); - } + for (int i = 0 ; i < size ; i++) + { + m_plugins.push_back(java_plugins[i]); + } + } + #endif return m_plugins; -} \ No newline at end of file +} diff --git a/service/protocol-plugin/plugin-manager/src/PluginManagerImpl.h b/service/protocol-plugin/plugin-manager/src/PluginManagerImpl.h index 3beb8e8..2d34ed0 100644 --- a/service/protocol-plugin/plugin-manager/src/PluginManagerImpl.h +++ b/service/protocol-plugin/plugin-manager/src/PluginManagerImpl.h @@ -27,7 +27,10 @@ #include "Plugin.h" #include "CpluffAdapter.h" -#include "FelixAdapter.h" + +#ifdef ANDROID + #include "FelixAdapter.h" +#endif namespace OIC { @@ -40,7 +43,7 @@ namespace OIC * During construction time, all plugins under the root plugin path will be loaded. * */ - PluginManagerImpl(); + PluginManagerImpl(void* args); /** * Virtual destructor @@ -174,11 +177,11 @@ namespace OIC */ virtual std::vector &getAllPlugins(void); - static PluginManagerImpl *Getinstance() + static PluginManagerImpl *Getinstance(void *arg) { if (NULL == s_pinstance) { - s_pinstance = new PluginManagerImpl(); + s_pinstance = new PluginManagerImpl(arg); } return s_pinstance; @@ -187,7 +190,9 @@ namespace OIC private: CpluffAdapter *cppm; - FelixAdapter *javappm; + #ifdef ANDROID + FelixAdapter *javappm; + #endif std::vector m_plugins; static PluginManagerImpl *s_pinstance; @@ -229,4 +234,4 @@ namespace OIC }; } -#endif //__PLUGINMANAGERIMPL_H__ \ No newline at end of file +#endif //__PLUGINMANAGERIMPL_H__ diff --git a/service/protocol-plugin/sample-app/linux/SConscript b/service/protocol-plugin/sample-app/linux/SConscript index 17359ad..c25d2f2 100644 --- a/service/protocol-plugin/sample-app/linux/SConscript +++ b/service/protocol-plugin/sample-app/linux/SConscript @@ -1,7 +1,7 @@ ## #sample-app build script ## - +import os Import('env') # Add third party libraries @@ -16,7 +16,8 @@ target_os = env.get('TARGET_OS') sample_env.AppendUnique(CPPPATH = [ '../../plugin-manager/src/', '../../lib/cpluff/libcpluff/', - '../../lib/rapidxml']) + '../../lib/rapidxml' + ]) if target_os not in ['windows', 'winrt']: sample_env.AppendUnique(CXXFLAGS = ['-Wall', '-pthread']) -- 2.7.4