X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fwrt-installer%2Fwrt_installer_api.cpp;h=83b5172bbf661ce4e453f2ee964380919434b45d;hb=bb6a49cba8cf075304d971b519809b1816bc53ad;hp=671ab9814e1954962e1f940755c13f1d17806e8b;hpb=6c643b796dc60f4f3e2870146ddb222246bba734;p=framework%2Fweb%2Fwrt-installer.git diff --git a/src/wrt-installer/wrt_installer_api.cpp b/src/wrt-installer/wrt_installer_api.cpp index 671ab98..83b5172 100644 --- a/src/wrt-installer/wrt_installer_api.cpp +++ b/src/wrt-installer/wrt_installer_api.cpp @@ -45,31 +45,10 @@ #include #include #include +#include using namespace WrtDB; -#ifdef __cplusplus - -#define EXPORT_API __attribute__((visibility("default"))) -extern "C" -{ -#endif -inline InstallMode::Type translateInstallMode( - WrtInstallMode installMode) -{ - if (WRT_INSTALL_MODE_INSTALL_WGT == installMode) { - return InstallMode::INSTALL_MODE_WGT; - } else if (WRT_INSTALL_MODE_INSTALL_DIRECTORY == installMode) { - return InstallMode::INSTALL_MODE_DIRECTORY; - } else if (WRT_INSTALL_MODE_INSTALL_PRELOAD == installMode) { - return InstallMode::INSTALL_MODE_PRELOAD; - } - Assert(true && "wrong argument is inputed"); -} - -const char PLUGIN_INSTALL_SEMAPHORE[] = "/.wrt_plugin_install_lock"; -static int wrt_count_plugin; - static std::string cutOffFileName(const std::string& path) { size_t found = path.find_last_of("/"); @@ -93,84 +72,16 @@ static bool checkPath(const std::string& path) static bool checkPaths() { bool if_ok = true; - if_ok &= (checkPath(cutOffFileName( - GlobalConfig::GetWrtDatabaseFilePath()))); - if (!if_ok) { - LogError( - "Path <" << GlobalConfig::GetWrtDatabaseFilePath() << - "> does not exist."); - } + if_ok &= (checkPath(cutOffFileName(GlobalConfig::GetWrtDatabaseFilePath()))); if_ok &= (checkPath(GlobalConfig::GetDevicePluginPath())); - if (!if_ok) { - LogError( - "Path <" << GlobalConfig::GetDevicePluginPath() << - "> does not exist."); - } - if_ok &= (checkPath(GlobalConfig::GetUserInstalledWidgetPath())); - if (!if_ok) { - LogError( - "Path <" << GlobalConfig::GetUserInstalledWidgetPath() << - "> does not exist."); - } - if_ok &= (checkPath(GlobalConfig::GetUserPreloadedWidgetPath())); - if (!if_ok) { - LogError( - "Path <" << GlobalConfig::GetUserPreloadedWidgetPath() << - "> does not exist."); - } - return if_ok; -} - -void plugin_install_status_cb(WrtErrStatus status, - void* userparam) -{ - Assert(userparam); - - wrt_plugin_data *plugin_data = static_cast(userparam); - - if (--wrt_count_plugin < 1) { - LogDebug("All plugins installation completed"); - - LogDebug("Call SetAllinstallpluginsCallback"); - plugin_data->plugin_installed_cb(plugin_data->user_data); - } - if (status == WRT_SUCCESS) { - LogInfo( - "plugin installation is successful: " << - plugin_data->plugin_path); - return; - } - - LogError("Fail to install plugin : " << plugin_data->plugin_path); - - switch (status) { - case WRT_INSTALLER_ERROR_PLUGIN_INSTALLATION_FAILED: - LogError("Failed : Plugin install path is wrong"); - break; - case WRT_INSTALLER_ERROR_UNKNOWN: - LogError("Failed : Unkown Error"); - break; - default: - break; - } -} - -void plugin_install_progress_cb(float percent, - const char* description, - void* userdata) -{ - char *plugin_path = static_cast(userdata); - - LogInfo("Install plugin : " << plugin_path << - ", Progress : " << percent << - ", Description : " << description); + return if_ok; } -EXPORT_API void wrt_installer_init(void *userdata, +void wrt_installer_init(void *userdata, WrtInstallerInitCallback callback) { // Set DPL/LOG MID @@ -232,7 +143,7 @@ EXPORT_API void wrt_installer_init(void *userdata, return; } -EXPORT_API void wrt_installer_shutdown() +void wrt_installer_shutdown() { try { LogInfo("[WRT-API] DEINITIALIZING WRT INSTALLER..."); @@ -257,19 +168,25 @@ EXPORT_API void wrt_installer_shutdown() } } -EXPORT_API void wrt_install_widget( +void wrt_install_widget( const char *path, void* userdata, WrtInstallerStatusCallback status_cb, WrtProgressCallback progress_cb, - WrtInstallMode installMode, - bool quiet, + InstallMode installMode, std::shared_ptr pkgmgrInterface ) { UNHANDLED_EXCEPTION_HANDLER_BEGIN { + if (InstallMode::InstallTime::PRELOAD == installMode.installTime) { + DPL::Log::OldStyleLogProvider *oldStyleProvider = + new DPL::Log::OldStyleLogProvider(false, false, false, true, + false, true); + DPL::Log::LogSystemSingleton::Instance().AddProvider(oldStyleProvider); + } + LogInfo("[WRT-API] INSTALL WIDGET: " << path); // Post installation event CONTROLLER_POST_EVENT( @@ -280,14 +197,13 @@ EXPORT_API void wrt_install_widget( InstallerCallbacksTranslate::installProgressCallback, new InstallerCallbacksTranslate::StatusCallbackStruct( userdata, status_cb, progress_cb), - translateInstallMode(installMode), - quiet, + installMode, pkgmgrInterface))); } UNHANDLED_EXCEPTION_HANDLER_END } -EXPORT_API void wrt_uninstall_widget( +void wrt_uninstall_widget( const char * const tzAppid, void* userdata, WrtInstallerStatusCallback status_cb, @@ -317,7 +233,7 @@ EXPORT_API void wrt_uninstall_widget( UNHANDLED_EXCEPTION_HANDLER_END } -EXPORT_API void wrt_install_plugin( +void wrt_install_plugin( const char *pluginDir, void *user_param, WrtPluginInstallerStatusCallback status_cb, @@ -345,131 +261,3 @@ EXPORT_API void wrt_install_plugin( } UNHANDLED_EXCEPTION_HANDLER_END } - -EXPORT_API void wrt_install_all_plugins( - WrtAllPluginInstalledCallback installed_cb, - void *user_param) -{ - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - std::string installRequest = - std::string(GlobalConfig::GetPluginInstallInitializerName()); - - LogDebug("Install new plugins"); - - Try { - DPL::Semaphore lock(PLUGIN_INSTALL_SEMAPHORE); - } - Catch(DPL::Semaphore::Exception::Base){ - LogError("Failed to create installation lock"); - return; - } - - struct stat tmp; - - if (-1 == stat(installRequest.c_str(), &tmp) || - !S_ISREG(tmp.st_mode)) - { - if (ENOENT == errno) { - LogDebug("Plugin installation not required"); - - LogDebug("Call SetAllinstallPluginCallback"); - installed_cb(user_param); - - DPL::Semaphore::Remove(PLUGIN_INSTALL_SEMAPHORE); - return; - } - LogWarning("Opening installation request file failed"); - } - - std::string PLUGIN_PATH = - std::string(GlobalConfig::GetDevicePluginPath()); - - DIR *dir; - dir = opendir(PLUGIN_PATH.c_str()); - if (!dir) { - DPL::Semaphore::Remove(PLUGIN_INSTALL_SEMAPHORE); - return; - } - - LogInfo("Plugin DIRECTORY IS" << PLUGIN_PATH); - struct dirent libdir; - struct dirent *result; - int return_code; - - errno = 0; - - std::list pluginsPaths; - - for (return_code = readdir_r(dir, &libdir, &result); - result != NULL && return_code == 0; - return_code = readdir_r(dir, &libdir, &result)) - { - if (strcmp(libdir.d_name, ".") == 0 || - strcmp(libdir.d_name, "..") == 0) - { - continue; - } - - std::string path = PLUGIN_PATH; - path += "/"; - path += libdir.d_name; - - struct stat tmp; - - if (stat(path.c_str(), &tmp) == -1) { - LogError("Failed to open file" << path); - continue; - } - - if (!S_ISDIR(tmp.st_mode)) { - LogError("Not a directory" << path); - continue; - } - - pluginsPaths.push_back(path); - } - - wrt_count_plugin = pluginsPaths.size(); - - FOREACH(it, pluginsPaths) { - wrt_plugin_data *plugin_data = new wrt_plugin_data; - - plugin_data->plugin_installed_cb = installed_cb; - plugin_data->plugin_path = const_cast(it->c_str()); - plugin_data->user_data = user_param; - - wrt_install_plugin( - it->c_str(), static_cast(plugin_data), - plugin_install_status_cb, - plugin_install_progress_cb); - } - - if (return_code != 0 || errno != 0) { - LogError("readdir_r() failed with " << DPL::GetErrnoString()); - } - - errno = 0; - if (-1 == TEMP_FAILURE_RETRY(closedir(dir))) { - LogError("Failed to close dir: " << PLUGIN_PATH << " with error: " - << DPL::GetErrnoString()); - } - - if (0 != unlink(installRequest.c_str())) { - LogError("Failed to remove file initializing plugin " - "installation"); - } - - Try { - DPL::Semaphore::Remove(PLUGIN_INSTALL_SEMAPHORE); - } - Catch(DPL::Semaphore::Exception::Base){ - LogInfo("Failed to remove installation lock"); - } - } - UNHANDLED_EXCEPTION_HANDLER_END -} - -#ifdef __cplusplus -} -#endif