package com.example.puree.logs.plugins;
import com.google.gson.JsonArray;
import com.cookpad.puree.async.AsyncResult;
import com.cookpad.puree.outputs.OutputConfiguration;
import com.cookpad.puree.outputs.PureeBufferedOutput;
import android.os.Handler;
import android.os.Looper;
import java.lang.ref.WeakReference;
import javax.annotation.Nonnull;
import javax.annotation.ParametersAreNonnullByDefault;
@ParametersAreNonnullByDefault
public class OutBufferedDisplay extends PureeBufferedOutput {
private static WeakReference<Callback> callbackRef = new WeakReference<>(null);
public static void register(Callback callback) {
callbackRef = new WeakReference<>(callback);
}
public static void unregister() {
callbackRef.clear();
}
@Override
public String type() {
return "out_buffered_display";
}
@Nonnull
@Override
public OutputConfiguration configure(OutputConfiguration conf) {
conf.setFlushIntervalMillis(3000);
return conf;
}
@Override
public void emit(final JsonArray jsonLogs, final AsyncResult result) {
final Callback callback = callbackRef.get();
if (callback == null) {
result.success();
return;
}
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
callback.onEmit(jsonLogs);
result.success();
}
});
}
public interface Callback {
void onEmit(JsonArray jsonLogs);
}
}