package im.actor.runtime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.*;
import im.actor.runtime.os.OSType;
/**
* Created by ex3ndr on 07.08.15.
*/
public class MainThreadRuntimeProvider implements MainThreadRuntime {
private static final Logger logger = LoggerFactory.getLogger(MainThreadRuntimeProvider.class);
public static final BlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable>();
public Thread main;
public MainThreadRuntimeProvider() {
main = new Thread(new Runnable() {
@Override
public void run() {
while (true)
{
try {
queue.take().run();
} catch (InterruptedException e) {
logger.error(e.getMessage(),e);
}
}
}
});
main.start();
}
@Override
public void postToMainThread(Runnable runnable) {
queue.add(runnable);
}
@Override
public boolean isMainThread() {
boolean isMain = Thread.currentThread() == main;
return isMain;
}
@Override
public boolean isSingleThread() {
return false;
}
@Override
public OSType getOSType() {
return OSType.OTHER;
}
}