Repository: incubator-weex
Updated Branches:
  refs/heads/master c4a204e63 -> 547da26af


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/547da26a/weex_core/Source/android/jsengine/multiprocess/WeexProxy.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/android/jsengine/multiprocess/WeexProxy.h 
b/weex_core/Source/android/jsengine/multiprocess/WeexProxy.h
index 6d9a5de..8c11bde 100644
--- a/weex_core/Source/android/jsengine/multiprocess/WeexProxy.h
+++ b/weex_core/Source/android/jsengine/multiprocess/WeexProxy.h
@@ -35,6 +35,7 @@
 #include <IPC/IPCSender.h>
 #include <IPC/IPCString.h>
 #include <IPC/Serializing/IPCSerializer.h>
+#include "core/../include/WeexApiHeader.h"
 
 namespace WeexCore {
 
@@ -48,9 +49,13 @@ public:
 
     static jint doInitFramework(JNIEnv *env, jobject object, jstring script, 
jobject params);
 
-    static void
+    static std::vector<INIT_FRAMEWORK_PARAMS *>
     initFromParam(JNIEnv *env, jstring script, jobject params, IPCSerializer 
*serializer);
 
+    static jint
+    initFrameworkInSingleProcess(JNIEnv *env, jstring script, 
std::vector<INIT_FRAMEWORK_PARAMS *> initFrameworkParams);
+    static jint initFrameworkInMultiProcess(JNIEnv *env, jstring script, 
IPCSerializer *serializer);
+
     static const char *getCacheDir(JNIEnv *env);
 
     static void setCacheDir(JNIEnv *env);
@@ -65,7 +70,7 @@ public:
     reportException(const char *instanceID, const char *func, const char 
*exception_string);
 
     static void reportServerCrash(jstring jinstanceid);
-
+    static void reportNativeInitStatus(const char *statusCode, const char 
*errorMsg);
     static jbyteArray execJSWithResult(JNIEnv* env, jobject jthis,
                                        jstring jinstanceid,
                                        jstring jnamespace,

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/547da26a/weex_core/Source/core/api/WeexJSCoreApi.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/api/WeexJSCoreApi.cpp 
b/weex_core/Source/core/api/WeexJSCoreApi.cpp
new file mode 100644
index 0000000..3ff7532
--- /dev/null
+++ b/weex_core/Source/core/api/WeexJSCoreApi.cpp
@@ -0,0 +1,292 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+//
+// Created by Darin on 13/02/2018.
+//
+
+#include "WeexJSCoreApi.h"
+#include <android/bridge/impl/bridge_impl_android.h>
+#include <core/render/manager/render_manager.h>
+#include <android/jsengine/multiprocess/ExtendJSApi.h>
+#include <android/base/string/string_utils.h>
+
+using namespace WeexCore;
+
+extern WeexCore::FunType gCanvasFunc;
+extern WeexCore::FunTypeT3d t3dFunc;
+
+void _setJSVersion(const char *jsVersion) {
+    LOGA("init JSFrm version %s", jsVersion);
+    Bridge_Impl_Android::getInstance()->setJSVersion(jsVersion);
+}
+
+void _reportException(const char *pageId, const char *func, const char 
*exception_string) {
+    Bridge_Impl_Android::getInstance()->reportException(pageId, func, 
exception_string);
+}
+
+void _callNative(const char *pageId, const char *task, const char *callback) {
+    if (pageId == nullptr || task == nullptr)
+        return;
+#if JSAPI_LOG
+    LOGD("[ExtendJSApi] handleCallNative >>>> pageId: %s, task: %s", pageId, 
task);
+#endif
+    if (strcmp(task, 
"[{\"module\":\"dom\",\"method\":\"createFinish\",\"args\":[]}]") == 0) {
+        RenderManager::GetInstance()->CreateFinish(pageId) ? 0 : -1;
+    } else {
+        Bridge_Impl_Android::getInstance()->callNative(pageId, task, callback);
+    }
+
+};
+
+std::unique_ptr<IPCResult>
+_callNativeModule(const char *pageId, const char *module, const char *method,
+                  const char *argString, const char *optString) {
+    std::unique_ptr<IPCResult> ret = createInt32Result(-1);
+    if (pageId != nullptr && module != nullptr && method != nullptr) {
+#if JSAPI_LOG
+        LOGD("[ExtendJSApi] handleCallNativeModule >>>> pageId: %s, module: 
%s, method: %s, arg: %s, opt: %s",
+         pageId, module, method, argString, optString);
+#endif
+
+        // add for android support
+        jobject result;
+        result = Bridge_Impl_Android::getInstance()->callNativeModule(pageId, 
module, method,
+                                                                      
argString, optString);
+
+        if (result == nullptr)
+            return ret;
+
+        JNIEnv *env = getJNIEnv();
+        jfieldID jTypeId = env->GetFieldID(jWXJSObject, "type", "I");
+        jint jTypeInt = env->GetIntField(result, jTypeId);
+        jfieldID jDataId = env->GetFieldID(jWXJSObject, "data", 
"Ljava/lang/Object;");
+        jobject jDataObj = env->GetObjectField(result, jDataId);
+        if (jTypeInt == 1) {
+            if (jDoubleValueMethodId == NULL) {
+                jclass jDoubleClazz = env->FindClass("java/lang/Double");
+                jDoubleValueMethodId = env->GetMethodID(jDoubleClazz, 
"doubleValue", "()D");
+                env->DeleteLocalRef(jDoubleClazz);
+            }
+            jdouble jDoubleObj = env->CallDoubleMethod(jDataObj, 
jDoubleValueMethodId);
+            ret = std::move(createDoubleResult(jDoubleObj));
+
+        } else if (jTypeInt == 2) {
+            jstring jDataStr = (jstring) jDataObj;
+            ret = std::move(createStringResult(env, jDataStr));
+        } else if (jTypeInt == 3) {
+            jstring jDataStr = (jstring) jDataObj;
+            ret = std::move(createJSONStringResult(env, jDataStr));
+        }
+        env->DeleteLocalRef(jDataObj);
+    }
+
+    return ret;
+}
+
+void _callNativeComponent(const char *pageId, const char *ref,
+                          const char *method, const char *argString,
+                          const char *optString) {
+    if (pageId != nullptr && ref != nullptr && method != nullptr) {
+
+#if JSAPI_LOG
+        LOGD("[ExtendJSApi] handleCallNativeComponent >>>> pageId: %s, ref: 
%s, method: %s, arg: %s, opt: %s",
+         pageId, ref, method, argString, optString);
+#endif
+
+        Bridge_Impl_Android::getInstance()->callNativeComponent(pageId, ref, 
method, argString,
+                                                                optString);
+    }
+}
+
+void _callAddElement(const char *pageId, const char *parentRef, const char 
*domStr,
+                     const char *index_cstr) {
+
+
+    const char *indexChar = index_cstr == nullptr ? "\0" : index_cstr;
+
+    int index = atoi(indexChar);
+    if (pageId == nullptr || parentRef == nullptr || domStr == nullptr || 
index < -1)
+        return;
+
+#if JSAPI_LOG
+
+    std::string log = "";
+  log.append("pageId: ").append(pageId).append(", parentRef: 
").append(parentRef).append(", domStr: ").append(domStr);
+  int log_index = 0;
+  int maxLength = 800;
+  std::string sub;
+  while (log_index < log.length()) {
+    if (log.length() <= log_index + maxLength) {
+      sub = log.substr(log_index);
+    } else {
+      sub = log.substr(log_index, maxLength);
+    }
+
+
+    if (log_index == 0)
+      LOGD("[ExtendJSApi] functionCallAddElement >>>> %s", sub.c_str());
+    else
+      LOGD("      [ExtendJSApi] functionCallAddElement >>>> %s", sub.c_str());
+
+    log_index += maxLength;
+  }
+#endif
+
+    RenderManager::GetInstance()->AddRenderObject(pageId, parentRef, index, 
domStr);
+}
+
+void _setTimeout(const char *callbackId, const char *time) {
+    Bridge_Impl_Android::getInstance()->setTimeout(callbackId, time);
+}
+
+void _callNativeLog(const char *str_array) {
+    Bridge_Impl_Android::getInstance()->callNativeLog(str_array);
+}
+
+void _callCreateBody(const char *pageId, const char *domStr) {
+#if JSAPI_LOG
+    LOGD("[ExtendJSApi] functionCallCreateBody >>>> pageId: %s, domStr: %s", 
pageId, domStr);
+#endif
+
+    RenderManager::GetInstance()->CreatePage(pageId, domStr) ? 0 : -1;
+}
+
+int _callUpdateFinish(const char *pageId, const char *task, const char 
*callback) {
+    return Bridge_Impl_Android::getInstance()->callUpdateFinish(pageId, task, 
callback);
+}
+
+void _callCreateFinish(const char *pageId) {
+#if JSAPI_LOG
+    LOGD("[ExtendJSApi] functionCallCreateFinish >>>> pageId: %s", pageId);
+#endif
+
+    RenderManager::GetInstance()->CreateFinish(pageId);
+}
+
+int _callRefreshFinish(const char *pageId, const char *task, const char 
*callback) {
+    if (pageId == nullptr)
+        return -1;
+    return Bridge_Impl_Android::getInstance()->callRefreshFinish(pageId, task, 
callback);
+}
+
+void _callUpdateAttrs(const char *pageId, const char *ref, const char *data) {
+#if JSAPI_LOG
+    LOGD("[ExtendJSApi] functionCallUpdateAttrs >>>> pageId: %s, ref: %s, 
data: %s", pageId,
+       ref, data);
+#endif
+
+    RenderManager::GetInstance()->UpdateAttr(pageId, ref, data);
+}
+
+void _callUpdateStyle(const char *pageId, const char *ref, const char *data) {
+#if JSAPI_LOG
+    LOGD("[ExtendJSApi] functionCallUpdateStyle >>>> pageId: %s, ref: %s, 
data: %s", pageId,
+       ref, data);
+#endif
+
+    RenderManager::GetInstance()->UpdateStyle(pageId, ref, data);
+}
+
+void _callRemoveElement(const char *pageId, const char *ref) {
+#if JSAPI_LOG
+    LOGD("[ExtendJSApi] functionCallRemoveElement >>>> pageId: %s, ref: %s", 
pageId,
+       ref);
+#endif
+
+    RenderManager::GetInstance()->RemoveRenderObject(pageId, ref);
+}
+
+void _callMoveElement(const char *pageId, const char *ref, const char 
*parentRef, int index) {
+#if JSAPI_LOG
+    LOGD("[ExtendJSApi] functionCallRemoveElement >>>> pageId: %s, ref: %s, 
parentRef: %s, index: %d",
+       pageId, ref, parentRef, index);
+#endif
+
+    RenderManager::GetInstance()->MoveRenderObject(pageId, ref, parentRef, 
index);
+}
+
+void _callAddEvent(const char *pageId, const char *ref, const char *event) {
+#if JSAPI_LOG
+    LOGD("[ExtendJSApi] functionCallAddEvent >>>> pageId: %s, ref: %s, event: 
%s", pageId,
+       ref, event);
+#endif
+
+    RenderManager::GetInstance()->AddEvent(pageId, ref, event);
+}
+
+void _callRemoveEvent(const char *pageId, const char *ref, const char *event) {
+#if JSAPI_LOG
+    LOGD("[ExtendJSApi] functionCallRemoveEvent >>>> pageId: %s, ref: %s, 
event: %s", pageId,
+       ref, event);
+#endif
+
+    RenderManager::GetInstance()->RemoveEvent(pageId, ref, event);
+}
+
+int _setInterval(const char *pageId, const char *callbackId, const char 
*_time) {
+    return (atoi(pageId) << 16) | (atoi(callbackId));
+}
+
+void _clearInterval(const char *pageId, const char *callbackId) {
+    return;
+}
+
+const char *_callGCanvasLinkNative(const char *pageId, int type, const char 
*args) {
+    const char *retVal = NULL;
+    if (gCanvasFunc) {
+        retVal = callGCanvasFun(gCanvasFunc, pageId, type, args);
+    }
+
+    return retVal;
+}
+
+const char *_t3dLinkNative(int type, const char *args) {
+    const char *retVal = NULL;
+    if (t3dFunc) {
+        retVal = WeexCore::weexCallT3dFunc(t3dFunc, type, args);
+    }
+
+    return retVal;
+}
+
+void callHandlePostMessage(const char *vimId, const char *data) {
+    JNIEnv *pEnv = getJNIEnv();
+    jstring pJstring = pEnv->NewStringUTF(vimId);
+    jbyteArray pArray = newJByteArray(pEnv, data);
+    Bridge_Impl_Android::getInstance()->handlePostMessage(pJstring, pArray);
+    pEnv->DeleteLocalRef(pJstring);
+    pEnv->DeleteLocalRef(pArray);
+}
+
+void
+callDIspatchMessage(const char *clientId, const char *data, const char 
*callback,
+                    const char *vmId) {
+    JNIEnv *pEnv = getJNIEnv();
+    jstring pClientId = newJString(pEnv, clientId);
+    jbyteArray pArray = newJByteArray(pEnv, data);
+    jstring pCallback = newJString(pEnv, callback);
+    jstring pVmId = newJString(pEnv, vmId);
+    Bridge_Impl_Android::getInstance()->handleDispatchMessage(pClientId, 
pVmId, pArray, pCallback);
+    pEnv->DeleteLocalRef(pClientId);
+    pEnv->DeleteLocalRef(pArray);
+    pEnv->DeleteLocalRef(pCallback);
+    pEnv->DeleteLocalRef(pVmId);
+}
+
+

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/547da26a/weex_core/Source/core/api/WeexJSCoreApi.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/api/WeexJSCoreApi.h 
b/weex_core/Source/core/api/WeexJSCoreApi.h
new file mode 100644
index 0000000..8ef33cc
--- /dev/null
+++ b/weex_core/Source/core/api/WeexJSCoreApi.h
@@ -0,0 +1,86 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+//
+// Created by Darin on 13/02/2018.
+//
+
+#ifndef WEEXV8_WEEXJSCOREAPI_H
+#define WEEXV8_WEEXJSCOREAPI_H
+
+#include "jni.h"
+#include "IPCResult.h"
+#include "WeexJSCoreApi.h"
+
+extern "C" {
+
+void _setJSVersion(const char *jsVersion);
+
+void _reportException(const char *pageId, const char *func, const char 
*exception_string);
+
+void _callNative(const char *pageId, const char *task, const char *callback);
+
+
+std::unique_ptr<IPCResult> _callNativeModule(const char *pageId, const char 
*module, const char *method,
+                       const char *argString, const char *optString);
+
+void _callNativeComponent(const char *pageId, const char *ref,
+                          const char *method, const char *argString,
+                          const char *optString);
+
+void _callAddElement(const char *pageId, const char *parentRef, const char 
*domStr,
+                     const char *index_cstr);
+
+void _setTimeout(const char *callbackId, const char *time);
+
+void _callNativeLog(const char *str_array);
+
+void _callCreateBody(const char *pageId, const char *domStr);
+
+int _callUpdateFinish(const char *pageId, const char *task, const char 
*callback);
+
+void _callCreateFinish(const char *pageId);
+
+int _callRefreshFinish(const char *pageId, const char *task, const char 
*callback);
+
+void _callUpdateAttrs(const char *pageId, const char *ref, const char *data);
+
+void _callUpdateStyle(const char *pageId, const char *ref, const char *data);
+
+void _callRemoveElement(const char *pageId, const char *ref);
+
+void _callMoveElement(const char *pageId, const char *ref, const char 
*parentRef, int index);
+
+void _callAddEvent(const char *pageId, const char *ref, const char *event);
+
+void _callRemoveEvent(const char *pageId, const char *ref, const char *event);
+
+int _setInterval(const char *pageId, const char *callbackId, const char 
*_time);
+
+void _clearInterval(const char *pageId, const char *callbackId);
+
+const char *_callGCanvasLinkNative(const char *pageId, int type, const char 
*args);
+
+const char *_t3dLinkNative(int type, const char *args);
+
+void callHandlePostMessage(const char *vimId, const char *data);
+
+void
+callDIspatchMessage(const char *clientId, const char *data, const char 
*callback, const char *vmId);
+};
+#endif //WEEXV8_WEEXJSCOREAPI_H

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/547da26a/weex_core/Source/include/WeexApiHeader.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/include/WeexApiHeader.h 
b/weex_core/Source/include/WeexApiHeader.h
new file mode 100644
index 0000000..dfb40ec
--- /dev/null
+++ b/weex_core/Source/include/WeexApiHeader.h
@@ -0,0 +1,214 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+//
+// Created by Darin on 12/02/2018.
+//
+
+#ifndef WEEXV8_WEEXAPIHEADER_H
+#define WEEXV8_WEEXAPIHEADER_H
+
+#include <jni.h>
+#include <vector>
+#include <IPC/IPCResult.h>
+
+struct WeexString {
+    uint32_t length;
+    uint16_t content[1];
+};
+
+struct WeexByteArray {
+    uint32_t length;
+    char content[1];
+};
+
+typedef void (*FuncSetJSVersion)(const char *jsVersion);
+
+typedef void (*FuncReportException)(const char *pageId, const char *func,
+                                    const char *exception_string);
+
+typedef void (*FuncCallNative)(const char *pageId, const char *task, const 
char *callback);
+
+typedef std::unique_ptr<IPCResult> (*FuncCallNativeModule)(const char *pageId, 
const char *module,
+                                                           const char *method,
+                                                           const char 
*argString,
+                                                           const char 
*optString);
+
+typedef void (*FuncCallNativeComponent)(const char *pageId, const char *ref,
+                                        const char *method, const char 
*argString,
+                                        const char *optString);
+
+typedef void (*FuncCallAddElement)(const char *pageId, const char *parentRef, 
const char *domStr,
+                                   const char *index_cstr);
+
+typedef void (*FuncSetTimeout)(const char *callbackId, const char *time);
+
+typedef void (*FuncCallNativeLog)(const char *str_array);
+
+typedef void (*FuncCallCreateBody)(const char *pageId, const char *domStr);
+
+typedef int (*FuncCallUpdateFinish)(const char *pageId, const char *task, 
const char *callback);
+
+typedef void (*FuncCallCreateFinish)(const char *pageId);
+
+typedef int (*FuncCallRefreshFinish)(const char *pageId, const char *task, 
const char *callback);
+
+typedef void (*FuncCallUpdateAttrs)(const char *pageId, const char *ref, const 
char *data);
+
+typedef void (*FuncCallUpdateStyle)(const char *pageId, const char *ref, const 
char *data);
+
+typedef void (*FuncCallRemoveElement)(const char *pageId, const char *ref);
+
+typedef void (*FuncCallMoveElement)(const char *pageId, const char *ref, const 
char *parentRef,
+                                    int index);
+
+typedef void (*FuncCallAddEvent)(const char *pageId, const char *ref, const 
char *event);
+
+typedef void (*FuncCallRemoveEvent)(const char *pageId, const char *ref, const 
char *event);
+
+typedef int (*FuncSetInterval)(const char *pageId, const char *callbackId, 
const char *_time);
+
+typedef void (*FuncClearInterval)(const char *pageId, const char *callbackId);
+
+typedef const char *(*FuncCallGCanvasLinkNative)(const char *pageId, int type, 
const char *args);
+
+typedef const char *(*FuncT3dLinkNative)(int type, const char *args);
+
+typedef void (*FuncCallHandlePostMessage)(const char *vimId, const char *data);
+
+typedef void
+(*FuncCallDIspatchMessage)(const char *clientId, const char *data, const char 
*callback,
+                           const char *vmId);
+
+
+typedef struct WeexCoreJsCoreApiFunctions {
+    FuncSetJSVersion funcSetJSVersion;
+    FuncReportException funcReportException;
+    FuncCallNative funcCallNative;
+    FuncCallNativeModule funcCallNativeModule;
+    FuncCallNativeComponent funcCallNativeComponent;
+    FuncCallAddElement funcCallAddElement;
+    FuncSetTimeout funcSetTimeout;
+    FuncCallNativeLog funcCallNativeLog;
+    FuncCallCreateBody funcCallCreateBody;
+    FuncCallUpdateFinish funcCallUpdateFinish;
+    FuncCallCreateFinish funcCallCreateFinish;
+    FuncCallRefreshFinish funcCallRefreshFinish;
+    FuncCallUpdateAttrs funcCallUpdateAttrs;
+    FuncCallUpdateStyle funcCallUpdateStyle;
+    FuncCallRemoveElement funcCallRemoveElement;
+    FuncCallMoveElement funcCallMoveElement;
+    FuncCallAddEvent funcCallAddEvent;
+    FuncCallRemoveEvent funcCallRemoveEvent;
+    FuncSetInterval funcSetInterval;
+    FuncClearInterval funcClearInterval;
+    FuncCallGCanvasLinkNative funcCallGCanvasLinkNative;
+    FuncT3dLinkNative funcT3dLinkNative;
+    FuncCallHandlePostMessage funcCallHandlePostMessage;
+    FuncCallDIspatchMessage funcCallDIspatchMessage;
+} WEEX_CORE_JS_API_FUNCTIONS;
+
+typedef struct InitFrameworkParams {
+    WeexByteArray *type;
+    WeexByteArray *value;
+} INIT_FRAMEWORK_PARAMS;
+
+
+enum class ParamsType {
+    INT32 = 1,
+    INT64,
+    FLOAT,
+    DOUBLE,
+    JSONSTRING,
+    STRING,
+    BYTEARRAY, /* terminated with zero. */
+    VOID,
+    JSUNDEFINED,
+    END,
+};
+
+
+typedef union ExecJsParamValue {
+    int32_t int32Value;
+    int64_t int64Value;
+    float floatValue;
+    double doubleValue;
+    WeexString *string;
+    WeexByteArray *byteArray;
+} EXEC_JS_PARAM_VALUE;
+
+typedef struct ValueWithType {
+    ParamsType type;
+    EXEC_JS_PARAM_VALUE value;
+} VALUE_WITH_TYPE;
+
+
+typedef int (*FuncInitFramework)(const char *script, 
std::vector<INIT_FRAMEWORK_PARAMS *> params);
+
+
+typedef int (*FuncInitAppFramework)(const char *instanceId, const char 
*appFramework,
+                                    std::vector<INIT_FRAMEWORK_PARAMS *> 
params);
+
+typedef int (*FuncCreateAppContext)(const char *instanceId, const char 
*jsBundle);
+
+typedef char *(*FuncExeJSOnAppWithResult)(const char *instanceId, const char 
*jsBundle);
+
+typedef int (*FuncCallJSOnAppContext)(const char *instanceId, const char *func,
+                                      std::vector<VALUE_WITH_TYPE *> params);
+
+typedef int (*FuncDestroyAppContext)(const char *instanceId);
+
+typedef int (*FuncExeJsService)(const char *source);
+
+typedef int (*FuncExeCTimeCallback)(const char *source);
+
+typedef int (*FuncExeJS)(const char *instanceId, const char *nameSpace, const 
char *func,
+                         std::vector<VALUE_WITH_TYPE *> params);
+
+typedef char *(*FuncExeJSWithResult)(const char *instanceId, const char 
*nameSpace,
+                                     const char *func,
+                                     std::vector<VALUE_WITH_TYPE *> params);
+
+typedef int (*FuncCreateInstance)(const char *instanceId, const char *func, 
const char *script,
+                                  const char *opts,
+                                  const char *initData, const char 
*extendsApi);
+
+typedef char *(*FuncExeJSOnInstance)(const char *instanceId, const char 
*script);
+
+typedef int (*FuncDestroyInstance)(const char *instanceId);
+
+typedef int (*FuncUpdateGlobalConfig)(const char *config);
+
+typedef struct WeexCoreJsServerApiFunctions {
+    FuncInitFramework funcInitFramework;
+    FuncInitAppFramework funcInitAppFramework;
+    FuncCreateAppContext funcCreateAppContext;
+    FuncExeJSOnAppWithResult funcExeJSOnAppWithResult;
+    FuncCallJSOnAppContext funcCallJSOnAppContext;
+    FuncDestroyAppContext funcDestroyAppContext;
+    FuncExeJsService funcExeJsService;
+    FuncExeCTimeCallback funcExeCTimeCallback;
+    FuncExeJS funcExeJS;
+    FuncExeJSWithResult funcExeJSWithResult;
+    FuncCreateInstance funcCreateInstance;
+    FuncExeJSOnInstance funcExeJSOnInstance;
+    FuncDestroyInstance funcDestroyInstance;
+    FuncUpdateGlobalConfig funcUpdateGlobalConfig;
+} WEEX_CORE_JS_SERVER_API_FUNCTIONS;
+
+#endif //WEEXV8_WEEXAPIHEADER_H

Reply via email to