/**
* 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.queue;
import com.facebook.infer.annotation.Assertions;
import com.facebook.proguard.annotations.DoNotStrip;
/**
* A utility for getting the MessageQueueThread for the current thread. Once there is only one
* implementation of MessageQueueThread, this should move to that class.
*/
@DoNotStrip
public class MessageQueueThreadRegistry {
private static ThreadLocal<MessageQueueThread> sMyMessageQueueThread = new ThreadLocal<>();
/*package*/ static void register(MessageQueueThread mqt) {
mqt.assertIsOnThread();
sMyMessageQueueThread.set(mqt);
}
/**
* @return the MessageQueueThread that owns the current Thread.
*/
@DoNotStrip
public static MessageQueueThread myMessageQueueThread() {
return Assertions.assertNotNull(
sMyMessageQueueThread.get(),
"This thread doesn't have a MessageQueueThread registered to it!");
}
}