mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-05 22:38:59 +08:00
Summary:To support native modules in web workers, native modules need to have an notion of the JS executor/thread that called into them in order to respond via Callback or JS module call to the right executor on the right thread. ExecutorToken is an object that only serves as a token that can be used to identify an executor/message queue thread in the bridge. It doesn't expose any methods. Native modules Callback objects automatically have this ExecutionContext attached -- JSModule calls for modules that support workers will need to supply an appropriate ExecutorToken when retrieving the JSModule implementation from the ReactContext. Reviewed By: mhorowitz Differential Revision: D2965458 fb-gh-sync-id: 6e354d4df8536d40b12d02bd055f6d06b4ca595d shipit-source-id: 6e354d4df8536d40b12d02bd055f6d06b4ca595d
32 lines
987 B
Java
32 lines
987 B
Java
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
package com.facebook.react.bridge;
|
|
|
|
/**
|
|
* Implementation of javascript callback function that use Bridge to schedule method execution
|
|
*/
|
|
public final class CallbackImpl implements Callback {
|
|
|
|
private final CatalystInstance mCatalystInstance;
|
|
private final ExecutorToken mExecutorToken;
|
|
private final int mCallbackId;
|
|
|
|
public CallbackImpl(CatalystInstance bridge, ExecutorToken executorToken, int callbackId) {
|
|
mCatalystInstance = bridge;
|
|
mExecutorToken = executorToken;
|
|
mCallbackId = callbackId;
|
|
}
|
|
|
|
@Override
|
|
public void invoke(Object... args) {
|
|
mCatalystInstance.invokeCallback(mExecutorToken, mCallbackId, Arguments.fromJavaArgs(args));
|
|
}
|
|
}
|