// Path: puree/src/main/java/com/cookpad/puree/outputs/OutputConfiguration.java
// @ParametersAreNonnullByDefault
// public class OutputConfiguration {
//     private int flushIntervalMillis = 2 * 60 * 1000; // 2 minutes
//     private int logsPerRequest = 100;
//     private int maxRetryCount = 5;
//     private long purgeAgeMillis = -1;
// 
//     OutputConfiguration() {
//     }
// 
//     public int getFlushIntervalMillis() {
//         return flushIntervalMillis;
//     }
// 
//     public void setFlushIntervalMillis(int flushIntervalMillis) {
//         this.flushIntervalMillis = flushIntervalMillis;
//     }
// 
//     public int getLogsPerRequest() {
//         return logsPerRequest;
//     }
// 
//     public void setLogsPerRequest(int logsPerRequest) {
//         this.logsPerRequest = logsPerRequest;
//     }
// 
//     public int getMaxRetryCount() {
//         return maxRetryCount;
//     }
// 
//     public void setMaxRetryCount(int maxRetryCount) {
//         this.maxRetryCount = maxRetryCount;
//     }
// 
//     public long getPurgeAgeMillis() {
//         return purgeAgeMillis;
//     }
// 
//     public void setPurgeAgeMillis(long purgeAgeMillis) {
//         this.purgeAgeMillis = purgeAgeMillis;
//     }
// }
// 
// Path: puree/src/main/java/com/cookpad/puree/outputs/PureeBufferedOutput.java
// @ParametersAreNonnullByDefault
// public abstract class PureeBufferedOutput extends PureeOutput {
// 
//     RetryableTaskRunner flushTask;
// 
//     ScheduledExecutorService executor;
// 
//     public PureeBufferedOutput() {
//     }
// 
//     @Override
//     public void initialize(PureeLogger logger) {
//         super.initialize(logger);
//         executor = logger.getExecutor();
//         flushTask = new RetryableTaskRunner(new Runnable() {
//             @Override
//             public void run() {
//                 flush();
//             }
//         }, conf.getFlushIntervalMillis(), conf.getMaxRetryCount(), executor);
//     }
// 
//     @Override
//     public void receive(final String jsonLog) {
//         executor.execute(new PureeVerboseRunnable(new Runnable() {
//             @Override
//             public void run() {
//                 String filteredLog = applyFilters(jsonLog);
//                 if (filteredLog != null) {
//                     storage.insert(type(), filteredLog);
//                 }
//             }
//         }));
// 
//         flushTask.tryToStart();
//     }
// 
//     @Override
//     public void flush() {
//         executor.execute(new PureeVerboseRunnable(new Runnable() {
//             @Override
//             public void run() {
//                 flushSync();
//             }
//         }));
//     }
// 
//     public void flushSync() {
//         if (!storage.lock()) {
//             flushTask.retryLater();
//             return;
//         }
//         purgeRecordsFromStorage();
//         final Records records = getRecordsFromStorage();
// 
//         if (records.isEmpty()) {
//             storage.unlock();
//             flushTask.reset();
//             return;
//         }
// 
//         final List<String> jsonLogs = records.getJsonLogs();
// 
//         emit(jsonLogs, new AsyncResult() {
//             @Override
//             public void success() {
//                 flushTask.reset();
//                 storage.delete(records);
//                 storage.unlock();
//             }
// 
//             @Override
//             public void fail() {
//                 flushTask.retryLater();
//                 storage.unlock();
//             }
//         });
//     }
// 
//     private Records getRecordsFromStorage() {
//         return storage.select(type(), conf.getLogsPerRequest());
//     }
// 
//     public abstract void emit(List<String> jsonLogs, final AsyncResult result);
// 
//     private void purgeRecordsFromStorage() {
//         if (!(storage instanceof EnhancedPureeStorage) || conf.getPurgeAgeMillis() < 0) {
//             return;
//         }
// 
//         ((EnhancedPureeStorage) storage).delete(type(), conf.getPurgeAgeMillis());
//     }
// 
//     public void emit(String jsonLog) {
//         // do nothing
//     }
// }


import com.cookpad.puree.async.AsyncResult;
import com.cookpad.puree.outputs.OutputConfiguration;
import com.cookpad.puree.outputs.PureeBufferedOutput;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.ParametersAreNonnullByDefault;
package com.example.puree.logs.plugins;




/**
 * PureeBufferedOutput plugin that does nothing. This is for benchmarking.
 */
@ParametersAreNonnullByDefault
public class OutBufferedVoid extends PureeBufferedOutput {

    @Override
    public void emit(List<String> jsonLogs, AsyncResult result) {
        result.success();
    }

    @Nonnull
// Path: puree/src/main/java/com/cookpad/puree/outputs/OutputConfiguration.java
// @ParametersAreNonnullByDefault
// public class OutputConfiguration {
//     private int flushIntervalMillis = 2 * 60 * 1000; // 2 minutes
//     private int logsPerRequest = 100;
//     private int maxRetryCount = 5;
//     private long purgeAgeMillis = -1;
// 
//     OutputConfiguration() {
//     }
// 
//     public int getFlushIntervalMillis() {
//         return flushIntervalMillis;
//     }
// 
//     public void setFlushIntervalMillis(int flushIntervalMillis) {
//         this.flushIntervalMillis = flushIntervalMillis;
//     }
// 
//     public int getLogsPerRequest() {
//         return logsPerRequest;
//     }
// 
//     public void setLogsPerRequest(int logsPerRequest) {
//         this.logsPerRequest = logsPerRequest;
//     }
// 
//     public int getMaxRetryCount() {
//         return maxRetryCount;
//     }
// 
//     public void setMaxRetryCount(int maxRetryCount) {
//         this.maxRetryCount = maxRetryCount;
//     }
// 
//     public long getPurgeAgeMillis() {
//         return purgeAgeMillis;
//     }
// 
//     public void setPurgeAgeMillis(long purgeAgeMillis) {
//         this.purgeAgeMillis = purgeAgeMillis;
//     }
// }
// 
// Path: puree/src/main/java/com/cookpad/puree/outputs/PureeBufferedOutput.java
// @ParametersAreNonnullByDefault
// public abstract class PureeBufferedOutput extends PureeOutput {
// 
//     RetryableTaskRunner flushTask;
// 
//     ScheduledExecutorService executor;
// 
//     public PureeBufferedOutput() {
//     }
// 
//     @Override
//     public void initialize(PureeLogger logger) {
//         super.initialize(logger);
//         executor = logger.getExecutor();
//         flushTask = new RetryableTaskRunner(new Runnable() {
//             @Override
//             public void run() {
//                 flush();
//             }
//         }, conf.getFlushIntervalMillis(), conf.getMaxRetryCount(), executor);
//     }
// 
//     @Override
//     public void receive(final String jsonLog) {
//         executor.execute(new PureeVerboseRunnable(new Runnable() {
//             @Override
//             public void run() {
//                 String filteredLog = applyFilters(jsonLog);
//                 if (filteredLog != null) {
//                     storage.insert(type(), filteredLog);
//                 }
//             }
//         }));
// 
//         flushTask.tryToStart();
//     }
// 
//     @Override
//     public void flush() {
//         executor.execute(new PureeVerboseRunnable(new Runnable() {
//             @Override
//             public void run() {
//                 flushSync();
//             }
//         }));
//     }
// 
//     public void flushSync() {
//         if (!storage.lock()) {
//             flushTask.retryLater();
//             return;
//         }
//         purgeRecordsFromStorage();
//         final Records records = getRecordsFromStorage();
// 
//         if (records.isEmpty()) {
//             storage.unlock();
//             flushTask.reset();
//             return;
//         }
// 
//         final List<String> jsonLogs = records.getJsonLogs();
// 
//         emit(jsonLogs, new AsyncResult() {
//             @Override
//             public void success() {
//                 flushTask.reset();
//                 storage.delete(records);
//                 storage.unlock();
//             }
// 
//             @Override
//             public void fail() {
//                 flushTask.retryLater();
//                 storage.unlock();
//             }
//         });
//     }
// 
//     private Records getRecordsFromStorage() {
//         return storage.select(type(), conf.getLogsPerRequest());
//     }
// 
//     public abstract void emit(List<String> jsonLogs, final AsyncResult result);
// 
//     private void purgeRecordsFromStorage() {
//         if (!(storage instanceof EnhancedPureeStorage) || conf.getPurgeAgeMillis() < 0) {
//             return;
//         }
// 
//         ((EnhancedPureeStorage) storage).delete(type(), conf.getPurgeAgeMillis());
//     }
// 
//     public void emit(String jsonLog) {
//         // do nothing
//     }
// }


// Path: demo/src/main/java/com/example/puree/logs/plugins/OutBufferedVoid.java
import com.cookpad.puree.async.AsyncResult;
import com.cookpad.puree.outputs.OutputConfiguration;
import com.cookpad.puree.outputs.PureeBufferedOutput;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.ParametersAreNonnullByDefault;

package com.example.puree.logs.plugins;




/**
 * PureeBufferedOutput plugin that does nothing. This is for benchmarking.
 */
@ParametersAreNonnullByDefault
public class OutBufferedVoid extends PureeBufferedOutput {

    @Override
    public void emit(List<String> jsonLogs, AsyncResult result) {
        result.success();
    }

    @Nonnull
    @Override