// Path: PluginApi/src/main/java/com/reginald/pluginm/pluginapi/IInvokeCallback.java
// public interface IInvokeCallback {
//     /**
//      * 函数回调
//      * @param params 回调参数
//      * @return 回调结果 {@link com.reginald.pluginm.pluginapi.IInvokeResult}
//      */
//     IInvokeResult onCallback(String params);
// }
// 
// Path: PluginApi/src/main/java/com/reginald/pluginm/pluginapi/IInvokeResult.java
// public interface IInvokeResult {
//     /**
//      * 函数调用结果成功
//      */
//     int RESULT_OK = 1;
//     /**
//      * 函数调用结果失败，未找到目标IInvoker
//      */
//     int RESULT_NOT_FOUND = -1;
//     /**
//      * 函数调用结果失败，远端服务进程死亡
//      */
//     int RESULT_REMOTE_ERROR = -2;
//     /**
//      * 函数调用结果失败，非法或不支持的参数
//      */
//     int RESULT_INVOKE_INVALID = -10;
//     /**
//      * 函数调用结果失败，内部错误
//      */
//     int RESULT_INVOKE_ERROR = -11;
// 
//     /**
//      * 获取调用返回码
//      * @return 返回码
//      */
//     int getResultCode();
// 
//     /**
//      * 获取调用结果，当{@link IInvokeResult#getResultCode()} 为 {@link IInvokeResult#RESULT_OK} 时才有意义。
//      * @return 调用结果
//      */
//     String getResult();
// 
//     IInvokeResult INVOKERESULT_VOID_OK = new IInvokeResult() {
//         @Override
//         public int getResultCode() {
//             return RESULT_OK;
//         }
// 
//         @Override
//         public String getResult() {
//             return null;
//         }
//     };
// }
// 
// Path: PluginApi/src/main/java/com/reginald/pluginm/pluginapi/IInvoker.java
// public interface IInvoker {
//     /**
//      * 提供此IInvoker对外提供的Binder服务
//      * @param context
//      * @return Binder服务
//      */
//     IBinder onServiceCreate(Context context);
// 
//     /**
//      * 处理此IInvoker上的函数调用
//      * @param context
//      * @param methodName 函数名称
//      * @param params 函数参数(建议使用json等结构化数据格式)
//      * @param callback 回调 {@link IInvokeCallback}
//      * @return 结果 {@link IInvokeResult} 不要返回null。
//      */
//     IInvokeResult onInvoke(Context context, String methodName, String params, IInvokeCallback callback);
// }


import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import com.reginald.pluginm.demo.pluginsharelib.ITestServiceBinder;
import com.reginald.pluginm.pluginapi.IInvokeCallback;
import com.reginald.pluginm.pluginapi.IInvokeResult;
import com.reginald.pluginm.pluginapi.IInvoker;
package com.example.testhost;



/**
 * Created by lxy on 17-9-21.
 */

public class MyHostInvoker implements IInvoker {

    private static final String TAG = "MyHostInvoker";

    private static final String METHOD_START_MAIN = "start_host_main";

    @Override
    public IBinder onServiceCreate(final Context context) {
        Log.d(TAG, "onServiceCreate()");
        return new ITestServiceBinder.Stub() {
            @Override
            public void test(String url) throws RemoteException {
                Log.d(TAG, "BINDER test() url = " + url);
            }
        };
    }

    @Override
// Path: PluginApi/src/main/java/com/reginald/pluginm/pluginapi/IInvokeCallback.java
// public interface IInvokeCallback {
//     /**
//      * 函数回调
//      * @param params 回调参数
//      * @return 回调结果 {@link com.reginald.pluginm.pluginapi.IInvokeResult}
//      */
//     IInvokeResult onCallback(String params);
// }
// 
// Path: PluginApi/src/main/java/com/reginald/pluginm/pluginapi/IInvokeResult.java
// public interface IInvokeResult {
//     /**
//      * 函数调用结果成功
//      */
//     int RESULT_OK = 1;
//     /**
//      * 函数调用结果失败，未找到目标IInvoker
//      */
//     int RESULT_NOT_FOUND = -1;
//     /**
//      * 函数调用结果失败，远端服务进程死亡
//      */
//     int RESULT_REMOTE_ERROR = -2;
//     /**
//      * 函数调用结果失败，非法或不支持的参数
//      */
//     int RESULT_INVOKE_INVALID = -10;
//     /**
//      * 函数调用结果失败，内部错误
//      */
//     int RESULT_INVOKE_ERROR = -11;
// 
//     /**
//      * 获取调用返回码
//      * @return 返回码
//      */
//     int getResultCode();
// 
//     /**
//      * 获取调用结果，当{@link IInvokeResult#getResultCode()} 为 {@link IInvokeResult#RESULT_OK} 时才有意义。
//      * @return 调用结果
//      */
//     String getResult();
// 
//     IInvokeResult INVOKERESULT_VOID_OK = new IInvokeResult() {
//         @Override
//         public int getResultCode() {
//             return RESULT_OK;
//         }
// 
//         @Override
//         public String getResult() {
//             return null;
//         }
//     };
// }
// 
// Path: PluginApi/src/main/java/com/reginald/pluginm/pluginapi/IInvoker.java
// public interface IInvoker {
//     /**
//      * 提供此IInvoker对外提供的Binder服务
//      * @param context
//      * @return Binder服务
//      */
//     IBinder onServiceCreate(Context context);
// 
//     /**
//      * 处理此IInvoker上的函数调用
//      * @param context
//      * @param methodName 函数名称
//      * @param params 函数参数(建议使用json等结构化数据格式)
//      * @param callback 回调 {@link IInvokeCallback}
//      * @return 结果 {@link IInvokeResult} 不要返回null。
//      */
//     IInvokeResult onInvoke(Context context, String methodName, String params, IInvokeCallback callback);
// }


// Path: testhost/src/main/java/com/example/testhost/MyHostInvoker.java
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import com.reginald.pluginm.demo.pluginsharelib.ITestServiceBinder;
import com.reginald.pluginm.pluginapi.IInvokeCallback;
import com.reginald.pluginm.pluginapi.IInvokeResult;
import com.reginald.pluginm.pluginapi.IInvoker;

package com.example.testhost;



/**
 * Created by lxy on 17-9-21.
 */

public class MyHostInvoker implements IInvoker {

    private static final String TAG = "MyHostInvoker";

    private static final String METHOD_START_MAIN = "start_host_main";

    @Override
    public IBinder onServiceCreate(final Context context) {
        Log.d(TAG, "onServiceCreate()");
        return new ITestServiceBinder.Stub() {
            @Override
            public void test(String url) throws RemoteException {
                Log.d(TAG, "BINDER test() url = " + url);
            }
        };
    }

    @Override
    public IInvokeResult onInvoke(Context context, String methodName, String params, IInvokeCallback callback) {