Skip to content

Instantly share code, notes, and snippets.

@vietj
Last active January 15, 2019 14:19
Show Gist options
  • Select an option

  • Save vietj/0cf3f62fb89982df83b7ca37bde0fca5 to your computer and use it in GitHub Desktop.

Select an option

Save vietj/0cf3f62fb89982df83b7ca37bde0fca5 to your computer and use it in GitHub Desktop.
// Basic impl
public class ReadWriteStream implements ReadStream<Buffer>, WriteStream<Buffer> {
private Handler<Buffer> dataHandler;
private Handler<Void> endHandler;
private Handler<Void> drainHandler;
private boolean paused;
@Override
public ReadWriteStream exceptionHandler(Handler<Throwable> handler) {
return this;
}
@Override
public ReadWriteStream handler(Handler<Buffer> handler) {
dataHandler = handler;
return this;
}
@Override
public ReadWriteStream pause() {
paused = true;
return this;
}
@Override
public ReadWriteStream resume() {
paused = false;
if (drainHandler != null) {
drainHandler.handle(null);
}
return this;
}
@Override
public ReadWriteStream endHandler(Handler<Void> handler) {
endHandler = handler;
return this;
}
@Override
public ReadWriteStream write(Buffer data) {
if (dataHandler != null) {
dataHandler.handle(data);
}
return this;
}
@Override
public void end() {
if (endHandler != null) {
endHandler.handle(null);
}
}
@Override
public ReadWriteStream setWriteQueueMaxSize(int maxSize) {
return this;
}
@Override
public boolean writeQueueFull() {
return paused;
}
@Override
public ReadWriteStream drainHandler(Handler<Void> handler) {
drainHandler = handler;
return this;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment