package org.solovyev.android.checkout;
import android.os.Handler;
import android.os.Looper;
import javax.annotation.Nonnull;
import javax.annotation.concurrent.ThreadSafe;
@ThreadSafe
class MainThreadLogger implements Logger {
@Nonnull
private final Logger mLogger;
private final MainThread mMainThread;
public MainThreadLogger(@Nonnull Logger logger) {
mLogger = logger;
mMainThread = new MainThread(new Handler(Looper.getMainLooper()));
}
@Override
public void v(@Nonnull final String tag, @Nonnull final String msg) {
mMainThread.execute(new Runnable() {
@Override
public void run() {
mLogger.v(tag, msg);
}
});
}
@Override
public void v(@Nonnull final String tag, @Nonnull final String msg, @Nonnull final Throwable e) {
mMainThread.execute(new Runnable() {
@Override
public void run() {
mLogger.v(tag, msg, e);
}
});
}
@Override
public void d(@Nonnull final String tag, @Nonnull final String msg) {
mMainThread.execute(new Runnable() {
@Override
public void run() {
mLogger.d(tag, msg);
}
});
}
@Override
public void d(@Nonnull final String tag, @Nonnull final String msg, @Nonnull final Throwable e) {
mMainThread.execute(new Runnable() {
@Override
public void run() {
mLogger.d(tag, msg, e);
}
});
}
@Override
public void i(@Nonnull final String tag, @Nonnull final String msg) {
mMainThread.execute(new Runnable() {
@Override
public void run() {
mLogger.i(tag, msg);
}
});
}
@Override
public void i(@Nonnull final String tag, @Nonnull final String msg, @Nonnull final Throwable e) {
mMainThread.execute(new Runnable() {
@Override
public void run() {
mLogger.i(tag, msg, e);
}
});
}
@Override
public void w(@Nonnull final String tag, @Nonnull final String msg) {
mMainThread.execute(new Runnable() {
@Override
public void run() {
mLogger.w(tag, msg);
}
});
}
@Override
public void w(@Nonnull final String tag, @Nonnull final String msg, @Nonnull final Throwable e) {
mMainThread.execute(new Runnable() {
@Override
public void run() {
mLogger.w(tag, msg, e);
}
});
}
@Override
public void e(@Nonnull final String tag, @Nonnull final String msg) {
mMainThread.execute(new Runnable() {
@Override
public void run() {
mLogger.e(tag, msg);
}
});
}
@Override
public void e(@Nonnull final String tag, @Nonnull final String msg, @Nonnull final Throwable e) {
mMainThread.execute(new Runnable() {
@Override
public void run() {
mLogger.e(tag, msg, e);
}
});
}
}