package org.webpieces.nio.api; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CompletableFuture; import org.webpieces.nio.api.channels.Channel; import org.webpieces.nio.api.handlers.DataListener; public class MockDataListener implements DataListener { private List<ByteBuffer> buffers = new ArrayList<>(); private CompletableFuture<ByteBuffer> firstBufferFuture; private boolean isClosed; @Override public synchronized void incomingData(Channel channel, ByteBuffer b) { if(buffers.isEmpty() && firstBufferFuture != null) { firstBufferFuture.complete(b); } this.buffers.add(b); } @Override public void farEndClosed(Channel channel) { this.isClosed = true; } @Override public void failure(Channel channel, ByteBuffer data, Exception e) { } @Override public void applyBackPressure(Channel channel) { } @Override public void releaseBackPressure(Channel channel) { } public synchronized CompletableFuture<ByteBuffer> getFirstBuffer() { firstBufferFuture = new CompletableFuture<>(); if(buffers.isEmpty()) { return firstBufferFuture; } firstBufferFuture.complete(buffers.get(0)); return firstBufferFuture; } public boolean isClosed() { return isClosed; } }