From b23b3e8b9475bc76d078d9b3cfd845a122ed724e Mon Sep 17 00:00:00 2001 From: Yunchan Cho Date: Tue, 30 Apr 2013 11:46:02 +0900 Subject: [PATCH] Support external request regarding updating content of Box [Issue#] N/A [Problem] web-provider doesn't do anything when external request regarding update box is comming [Cause] N/A [Solution] In this case, web-provider reloads its box Change-Id: I2bbc5b6c9d99cec9cdb17595b6d2bb10aac5fb06 --- src/Core/BoxManager.cpp | 14 ++++++++++++++ src/Core/BoxManager.h | 2 ++ src/Daemon/BoxDaemonImpl.cpp | 34 ++++++++++++++++++++++++---------- src/Daemon/BoxDaemonImpl.h | 6 +++--- src/Plugin/box_plugin_interface.h | 1 + 5 files changed, 44 insertions(+), 13 deletions(-) diff --git a/src/Core/BoxManager.cpp b/src/Core/BoxManager.cpp index 1b95d61..fe4256a 100644 --- a/src/Core/BoxManager.cpp +++ b/src/Core/BoxManager.cpp @@ -75,6 +75,9 @@ bool BoxManager::doCommand(const request_cmd_type type, const BoxInfoPtr& boxInf case REQUEST_CMD_CHANGE_PERIOD: result = requestChangePeriod(boxInfo->instanceId, boxInfo->period); break; + case REQUEST_CMD_UPDATE_BOX: + result = requestUpdateBox(boxInfo->instanceId); + break; default: LogD("not available request type"); break; @@ -214,6 +217,17 @@ bool BoxManager::requestChangePeriod(std::string& instanceId, float period) return box->changePeriod(period); } +bool BoxManager::requestUpdateBox(std::string& instanceId) +{ + LogD("enter"); + IBoxPtr box = searchBoxMap(instanceId); + if (!box) { + return false; + } + + return box->update(); +} + void BoxManager::insertBoxMap(std::string& instanceId, IBoxPtr box) { if (!searchBoxMap(instanceId)) { diff --git a/src/Core/BoxManager.h b/src/Core/BoxManager.h index ea06e9c..b785037 100644 --- a/src/Core/BoxManager.h +++ b/src/Core/BoxManager.h @@ -53,6 +53,8 @@ class EXPORT_CLASS BoxManager: public IBoxManager { int width, int height, double x, double y); virtual bool requestClosePd(std::string& instanceId); virtual bool requestChangePeriod(std::string& instanceId, float period); + virtual bool requestUpdateBox(std::string& instanceId); + // ewk context deleter struct EwkContextDeleter { void operator()(Ewk_Context* ptr); diff --git a/src/Daemon/BoxDaemonImpl.cpp b/src/Daemon/BoxDaemonImpl.cpp index 9d0083f..47dda06 100755 --- a/src/Daemon/BoxDaemonImpl.cpp +++ b/src/Daemon/BoxDaemonImpl.cpp @@ -289,7 +289,7 @@ int BoxDaemonImpl::clickedCallback(ProviderEventArgPtr arg, void* data) return 0; } -int BoxDaemonImpl::resizeCallback(ProviderEventArgPtr arg, void* data) +int BoxDaemonImpl::boxResizeCallback(ProviderEventArgPtr arg, void* data) { LogD("enter"); @@ -395,30 +395,44 @@ int BoxDaemonImpl::resumeCallback(ProviderEventArgPtr arg, void* data) return ret ? 0 : -1; } -int BoxDaemonImpl::updateContentCallback(ProviderEventArgPtr arg, void* data) +int BoxDaemonImpl::boxPeriodChangeCallback(ProviderEventArgPtr arg, void* data) { LogD("enter"); + BoxDaemonImpl* This = static_cast(data); + BoxInfoPtr info = This->initializeBoxInfo(arg); + if (!info) { + return -1; + } + info->period = arg->info.set_period.period; - return 0; + LogD("--------------------------------------------"); + LogD("boxId: %s", info->boxId.c_str()); + LogD("InstanceId: %s", info->instanceId.c_str()); + LogD("period: %f", info->period); + LogD("--------------------------------------------"); + + JobInfo* jobInfo = new JobInfo(REQUEST_CMD_CHANGE_PERIOD, info, This); + Ecore_Job* ret = ecore_job_add(requestBoxJobCallback, jobInfo); + + return ret ? 0 : -1; } -int BoxDaemonImpl::changePeriodCallback(ProviderEventArgPtr arg, void* data) +int BoxDaemonImpl::boxUpdateCallback(ProviderEventArgPtr arg, void* data) { LogD("enter"); + BoxDaemonImpl* This = static_cast(data); BoxInfoPtr info = This->initializeBoxInfo(arg); if (!info) { return -1; } - info->period = arg->info.set_period.period; LogD("--------------------------------------------"); LogD("boxId: %s", info->boxId.c_str()); LogD("InstanceId: %s", info->instanceId.c_str()); - LogD("period: %f", info->period); LogD("--------------------------------------------"); - JobInfo* jobInfo = new JobInfo(REQUEST_CMD_CHANGE_PERIOD, info, This); + JobInfo* jobInfo = new JobInfo(REQUEST_CMD_UPDATE_BOX, info, This); Ecore_Job* ret = ecore_job_add(requestBoxJobCallback, jobInfo); return ret ? 0 : -1; @@ -441,9 +455,9 @@ void BoxDaemonImpl::setProviderCallbacks(ProviderCallbacks& callbacks) callbacks.pd_create = BoxDaemonImpl::pdCreateCallback; callbacks.pd_destroy = BoxDaemonImpl::pdDestroyCallback; callbacks.clicked = BoxDaemonImpl::clickedCallback; - callbacks.resize = BoxDaemonImpl::resizeCallback; - callbacks.update_content = BoxDaemonImpl::updateContentCallback; - callbacks.set_period = BoxDaemonImpl::changePeriodCallback; + callbacks.resize = BoxDaemonImpl::boxResizeCallback; + callbacks.update_content = BoxDaemonImpl::boxUpdateCallback; + callbacks.set_period = BoxDaemonImpl::boxPeriodChangeCallback; } const char* BoxDaemonImpl::getBoxType(const char* boxId) diff --git a/src/Daemon/BoxDaemonImpl.h b/src/Daemon/BoxDaemonImpl.h index 0accec9..46ccef6 100644 --- a/src/Daemon/BoxDaemonImpl.h +++ b/src/Daemon/BoxDaemonImpl.h @@ -60,13 +60,13 @@ class BoxDaemonImpl { static int pdCreateCallback(ProviderEventArgPtr arg, void* data); static int pdDestroyCallback(ProviderEventArgPtr arg, void* data); static int clickedCallback(ProviderEventArgPtr arg, void* data); - static int resizeCallback(ProviderEventArgPtr arg, void* data); + static int boxResizeCallback(ProviderEventArgPtr arg, void* data); static int boxPauseCallback(ProviderEventArgPtr arg, void* data); static int boxResumeCallback(ProviderEventArgPtr arg, void* data); static int pauseCallback(ProviderEventArgPtr arg, void* data); static int resumeCallback(ProviderEventArgPtr arg, void* data); - static int updateContentCallback(ProviderEventArgPtr arg, void* data); - static int changePeriodCallback(ProviderEventArgPtr arg, void* data); + static int boxPeriodChangeCallback(ProviderEventArgPtr arg, void* data); + static int boxUpdateCallback(ProviderEventArgPtr arg, void* data); // common private functions void setProviderCallbacks(ProviderCallbacks& callbacks); diff --git a/src/Plugin/box_plugin_interface.h b/src/Plugin/box_plugin_interface.h index 246ab42..918caff 100644 --- a/src/Plugin/box_plugin_interface.h +++ b/src/Plugin/box_plugin_interface.h @@ -44,6 +44,7 @@ typedef enum { REQUEST_CMD_RESUME_ALL, REQUEST_CMD_PAUSE_ALL, REQUEST_CMD_CHANGE_PERIOD, + REQUEST_CMD_UPDATE_BOX, } request_cmd_type; // definition of interface function type -- 2.7.4