Last active
January 15, 2019 14:19
-
-
Save vietj/0cf3f62fb89982df83b7ca37bde0fca5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // 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