Skip to content

Commit

Permalink
chore: migrate MessageQueueThread
Browse files Browse the repository at this point in the history
  • Loading branch information
TheRogue76 committed Jan 13, 2025
1 parent 0f307b5 commit 9adb094
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 67 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,77 +4,63 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
package com.facebook.react.bridge.queue

package com.facebook.react.bridge.queue;
import com.facebook.proguard.annotations.DoNotStrip
import com.facebook.react.bridge.AssertionException
import java.util.concurrent.Callable
import java.util.concurrent.Future

import androidx.annotation.Nullable;
import com.facebook.proguard.annotations.DoNotStrip;
import com.facebook.react.bridge.AssertionException;

import java.util.concurrent.Callable;
import java.util.concurrent.Future;

/** Encapsulates a Thread that can accept Runnables. */
/** Encapsulates a Thread that can accept Runnables. */
@DoNotStrip
public interface MessageQueueThread {
/**
* Runs the given Runnable on this Thread. It will be submitted to the end of the event queue even
* if it is being submitted from the same queue Thread.
*/
@DoNotStrip
boolean runOnQueue(Runnable runnable);
/**
* Runs the given Runnable on this Thread. It will be submitted to the end of the event queue even
* if it is being submitted from the same queue Thread.
*/
@DoNotStrip
public fun runOnQueue(runnable: Runnable): Boolean

/**
* Runs the given Callable on this Thread. It will be submitted to the end of the event queue even
* if it is being submitted from the same queue Thread.
*/
@DoNotStrip
<T> Future<T> callOnQueue(final Callable<T> callable);
/**
* Runs the given Callable on this Thread. It will be submitted to the end of the event queue even
* if it is being submitted from the same queue Thread.
*/
@DoNotStrip
public fun <T> callOnQueue(callable: Callable<T>): Future<T?>

/**
* @return whether the current Thread is also the Thread associated with this MessageQueueThread.
*/
@DoNotStrip
boolean isOnThread();
@DoNotStrip
public fun isOnThread(): Boolean

/**
* Asserts {@link #isOnThread()}, throwing a {@link AssertionException} (NOT an {@link
* AssertionError}) if the assertion fails.
*/
@DoNotStrip
void assertIsOnThread();
/**
* Asserts [.isOnThread], throwing a [AssertionException] (NOT an [ ]) if the assertion fails.
*/
@DoNotStrip
public fun assertIsOnThread()

/**
* Asserts {@link #isOnThread()}, throwing a {@link AssertionException} (NOT an {@link
* AssertionError}) if the assertion fails. The given message is appended to the error.
*/
@DoNotStrip
void assertIsOnThread(String message);
/**
* Asserts [.isOnThread], throwing a [AssertionException] (NOT an [ ]) if the assertion fails. The given message is appended to the error.
*/
@DoNotStrip
public fun assertIsOnThread(message: String)

/**
* Quits this MessageQueueThread. If called from this MessageQueueThread, this will be the last
* thing the thread runs. If called from a separate thread, this will block until the thread can
* be quit and joined.
*/
@DoNotStrip
void quitSynchronous();
/**
* Quits this MessageQueueThread. If called from this MessageQueueThread, this will be the last
* thing the thread runs. If called from a separate thread, this will block until the thread can
* be quit and joined.
*/
@DoNotStrip
public fun quitSynchronous()

/**
* Returns the perf counters taken when the framework was started. This method is intended to be
* used for instrumentation purposes.
*/
@Nullable
@DoNotStrip
MessageQueueThreadPerfStats getPerfStats();
@DoNotStrip
public fun getPerfStats(): MessageQueueThreadPerfStats?

/**
* Resets the perf counters. This is useful if the RN threads are being re-used. This method is
* intended to be used for instrumentation purposes.
*/
@DoNotStrip
void resetPerfStats();
/**
* Resets the perf counters. This is useful if the RN threads are being re-used. This method is
* intended to be used for instrumentation purposes.
*/
@DoNotStrip
public fun resetPerfStats()

/** Returns true if the message queue is idle */
@DoNotStrip
boolean isIdle();
@DoNotStrip
public fun isIdle(): Boolean
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public class MessageQueueThreadImpl private constructor(
* if it is being submitted from the same queue Thread.
*/
@DoNotStrip
override fun runOnQueue(runnable: Runnable): Boolean {
public override fun runOnQueue(runnable: Runnable): Boolean {
if (isFinished) {
FLog.w(
ReactConstants.TAG,
Expand All @@ -54,7 +54,7 @@ public class MessageQueueThreadImpl private constructor(
}

@DoNotStrip
override fun <T> callOnQueue(callable: Callable<T>): Future<T?> {
public override fun <T> callOnQueue(callable: Callable<T>): Future<T?> {
val future = SimpleSettableFuture<T>()
runOnQueue {
try {
Expand All @@ -80,17 +80,17 @@ public class MessageQueueThreadImpl private constructor(
@DoNotStrip
@Throws(AssertionException::class)
override fun assertIsOnThread() {
assertCondition(isOnThread, assertionErrorMessage)
assertCondition(isOnThread(), assertionErrorMessage)
}

/**
* Asserts [.isOnThread], throwing a [AssertionException] (NOT an [ ]) if the assertion fails.
*/
@DoNotStrip
@Throws(AssertionException::class)
override fun assertIsOnThread(message: String) {
public override fun assertIsOnThread(message: String) {
assertCondition(
isOnThread,
isOnThread(),
StringBuilder().append(assertionErrorMessage).append(" ").append(message).toString()
)
}
Expand Down Expand Up @@ -129,7 +129,7 @@ public class MessageQueueThreadImpl private constructor(
}

@DoNotStrip
override fun isIdle(): Boolean {
public override fun isIdle(): Boolean {
return looper.queue.isIdle
}

Expand Down

0 comments on commit 9adb094

Please sign in to comment.