Support external request regarding updating content of Box
authorYunchan Cho <yunchan.cho@samsung.com>
Tue, 30 Apr 2013 02:46:02 +0000 (11:46 +0900)
committerYunchan Cho <yunchan.cho@samsung.com>
Tue, 30 Apr 2013 09:41:53 +0000 (18:41 +0900)
[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
src/Core/BoxManager.h
src/Daemon/BoxDaemonImpl.cpp
src/Daemon/BoxDaemonImpl.h
src/Plugin/box_plugin_interface.h

index 1b95d61..fe4256a 100644 (file)
@@ -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)) {
index ea06e9c..b785037 100644 (file)
@@ -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);
index 9d0083f..47dda06 100755 (executable)
@@ -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<BoxDaemonImpl*>(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<BoxDaemonImpl*>(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)
index 0accec9..46ccef6 100644 (file)
@@ -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);
index 246ab42..918caff 100644 (file)
@@ -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