From: Pawel Kaczmarek
Date: Thu, 13 Aug 2015 11:47:57 +0000 (+0200)
Subject: [Utils] Binary Exchanging support
X-Git-Tag: submit/tizen/20151026.073646^2^2~178^2
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=530ab695881e80a6087f71e77d85f00a9e4a1f2b;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git
[Utils] Binary Exchanging support
NativeManager
- callData
- callSyncData
- sendSyncData
- setDataListener
Change-Id: I20048cbc362e376d9fed99281ca830bb7dc3784e
Signed-off-by: Pawel Kaczmarek
---
diff --git a/src/utils/utils_api.js b/src/utils/utils_api.js
index 07bab02e..8b0a6c67 100755
--- a/src/utils/utils_api.js
+++ b/src/utils/utils_api.js
@@ -533,8 +533,6 @@ Converter.prototype.toEnum = function(val, e, nullable) {
var _converter = new Converter();
-
-
/////////////////////////////////////////////////////////////////////////////
/** @constructor */
var Validator = function() {
@@ -938,6 +936,8 @@ var NativeManager = function(extension) {
if (!extension || !extension.internal ||
!_type.isFunction(extension.postMessage) ||
!_type.isFunction(extension.internal.sendSyncMessage) ||
+ !_type.isFunction(extension.sendSyncData) ||
+ !_type.isFunction(extension.setDataListener) ||
!_type.isFunction(extension.sendRuntimeMessage) ||
!_type.isFunction(extension.sendRuntimeAsyncMessage) ||
!_type.isFunction(extension.sendRuntimeSyncMessage) ||
@@ -997,6 +997,44 @@ var NativeManager = function(extension) {
console.error('Missing callback or listener identifier. Ignoring message.');
}.bind(this));
+
+ extension_.setDataListener(function(msg, chunk_id) {
+ var msg = JSON.parse(msg);
+ msg.chunk_id = chunk_id;
+ var id;
+
+ if (msg.hasOwnProperty(this.CALLBACK_ID_KEY)) {
+ id = msg[this.CALLBACK_ID_KEY];
+ delete msg[this.CALLBACK_ID_KEY];
+
+ if (!_type.isFunction(this.callbacks_[id])) {
+ console.error('Wrong callback identifier. Ignoring message.');
+ return;
+ }
+
+ this.callbacks_[id](msg);
+ delete this.callbacks_[id];
+
+ return;
+ }
+
+ if (msg.hasOwnProperty(this.LISTENER_ID_KEY)) {
+ id = msg[this.LISTENER_ID_KEY];
+ delete msg[this.LISTENER_ID_KEY];
+
+ if (!_type.isFunction(this.listeners_[id])) {
+ console.error('Wrong listener identifier. Ignoring message.');
+ return;
+ }
+
+ this.listeners_[id](msg);
+
+ return;
+ }
+
+ console.error('Missing callback or listener identifier. Ignoring message.');
+
+ }.bind(this));
};
NativeManager.prototype.call = function(cmd, args, callback) {
@@ -1009,6 +1047,16 @@ NativeManager.prototype.call = function(cmd, args, callback) {
return this.callSync(cmd, args);
};
+NativeManager.prototype.callData = function(cmd, args, chunk, callback) {
+ args = args || {};
+
+ var replyId = this.nextReplyId;
+ args[this.CALLBACK_ID_KEY] = replyId;
+ this.callbacks_[replyId] = callback;
+
+ return this.callSyncData(cmd, args, chunk);
+};
+
NativeManager.prototype.callSync = function(cmd, args) {
var request = JSON.stringify({
cmd: cmd,
@@ -1018,6 +1066,16 @@ NativeManager.prototype.callSync = function(cmd, args) {
return JSON.parse(this.extension.internal.sendSyncMessage(request));
};
+NativeManager.prototype.callSyncData = function(cmd, args, chunk) {
+ var request = JSON.stringify({
+ cmd: cmd,
+ args: args || {}
+ });
+ var response = this.extension.sendSyncData(request, chunk);
+ response.reply = JSON.parse(response.reply);
+ return response;
+};
+
NativeManager.prototype.sendRuntimeMessage = function(msg, body) {
return this.extension.sendRuntimeMessage(msg, body || '');
};