
com.redislabs.mesclun.gears.output.ExecutionListOutput Maven / Gradle / Ivy
package com.redislabs.mesclun.gears.output;
import com.redislabs.mesclun.gears.Execution;
import io.lettuce.core.codec.RedisCodec;
import io.lettuce.core.output.CommandOutput;
import io.lettuce.core.output.ListSubscriber;
import io.lettuce.core.output.StreamingOutput;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ExecutionListOutput extends CommandOutput> implements StreamingOutput {
private boolean initialized;
private Subscriber subscriber;
private Execution execution;
private String field;
public ExecutionListOutput(RedisCodec codec) {
super(codec, Collections.emptyList());
setSubscriber(ListSubscriber.instance());
}
@Override
public void set(ByteBuffer bytes) {
if (field == null) {
field = decodeAscii(bytes);
return;
}
if (field.equals("executionId")) {
execution = new Execution();
execution.setId(decodeAscii(bytes));
field = null;
return;
}
if (field.equals("status")) {
execution.setStatus(decodeAscii(bytes));
field = null;
}
}
@Override
public void set(long integer) {
if (field.equals("registered")) {
execution.setRegistered(integer);
field = null;
subscriber.onNext(output, execution);
execution = null;
}
}
@Override
public void multi(int count) {
if (!initialized) {
output = newList(count);
initialized = true;
}
}
private List newList(int capacity) {
if (capacity < 1) {
return Collections.emptyList();
}
return new ArrayList<>(capacity);
}
public void setSubscriber(Subscriber subscriber) {
this.subscriber = subscriber;
}
@Override
public Subscriber getSubscriber() {
return subscriber;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy