2 // Tizen Web Device API
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
18 #include "DataSyncResponseDispatcher.h"
19 #include "DataSyncConverter.h"
20 #include "DataSyncMultiCallback.h"
22 #include <CommonsJavaScript/JSCallbackManager.h>
23 #include <JSTizenException.h>
24 #include <JSTizenExceptionFactory.h>
27 using namespace WrtDeviceApis::Commons;
28 using namespace WrtDeviceApis::CommonsJavaScript;
29 using namespace DeviceAPI::Common;
34 DataSyncResponseDispatcher& DataSyncResponseDispatcher::getInstance()
36 static DataSyncResponseDispatcher instance;
40 DataSyncResponseDispatcher::DataSyncResponseDispatcher() :
41 OnDataSyncStateChangedListener(ThreadEnum::NULL_THREAD)
45 DataSyncResponseDispatcher::~DataSyncResponseDispatcher()
49 void DataSyncResponseDispatcher::onAnswerReceived(const OnDataSyncStateChangedPtr& event)
51 DataSyncStateChangeCallbackPrivateDataPtr multiCallbacks =
52 DPL::StaticPointerCast<DataSyncStateChangeCallbackPrivateData>(event->getPrivateData());
53 if (!multiCallbacks) {
54 LoggerE("No listener callback!");
60 JSContextRef context = multiCallbacks->getOnProgress()->getContext();
61 if (event->getResult()) {
62 DataSyncConverter converter(context);
63 JSValueRef profileId = converter.toJSValueRef(event->getProfileId());
64 if( OnDataSyncStateChanged::PROGRESS_STATUS==event->getSessionStatus() ) {
65 LoggerD("Sync progress: "<<event->getSyncedPerService()<<"/"<<event->getTotalPerService());
66 JSValueRef serviceType = converter.toJSValueRef(converter.toTizenValue(event->getServiceType()));
67 JSValueRef isFromServer = converter.toJSValueRef(event->getIsFromServer());
68 JSValueRef totalPerService = converter.toJSValueRef(event->getTotalPerService());
69 JSValueRef syncedPerService = converter.toJSValueRef(event->getSyncedPerService());
70 JSValueRef objParam[5] = {profileId, serviceType, isFromServer, totalPerService, syncedPerService};
71 multiCallbacks->getOnProgress()->callOnSuccess(objParam, 5);
72 } else if ( OnDataSyncStateChanged::COMPLETE_STATUS==event->getSessionStatus() ) {
73 LoggerD("Sync completed.");
74 multiCallbacks->getOnCompleted()->callOnSuccess(profileId);
75 } else if ( OnDataSyncStateChanged::STOP_STATUS==event->getSessionStatus() ) {
76 LoggerD("Sync stopped.");
77 multiCallbacks->getOnStopped()->callOnSuccess(profileId);
78 } else if ( OnDataSyncStateChanged::FAIL_STATUS==event->getSessionStatus()) {
79 LoggerD("Sync failed with: "<<event->getExceptionCode());
80 JSValueRef errorObject;
81 if (ExceptionCodes::PlatformException==event->getExceptionCode()) {
82 //errorObject = JSTizenExceptionFactory::makeErrorObject(context, JSTizenException::NETWORK_ERROR, event->getErrorMessage());
83 errorObject = JSTizenExceptionFactory::makeErrorObject(context, JSTizenException::NETWORK_ERROR);
85 errorObject = JSTizenExceptionFactory::makeErrorObject(context, JSTizenException::UNKNOWN_ERROR);
87 JSValueRef objParam[2] = {profileId, errorObject};
88 multiCallbacks->getOnFailed()->callOnSuccess(objParam, 2);
90 LoggerW("Wrong sync session state.");
93 LoggerW("Failed result received.");
98 LoggerE("Error during processing answer.");