@Test public void writeBytes() throws Exception { String str = "AbCdEfGhIjKlMnOpQrStUvWxYz"; ByteBufferQueue queue = new ByteBufferQueue(10); ByteBufferQueueOutputStream instance = new ByteBufferQueueOutputStream(queue); for (int i = 1; i < str.length(); i += 2) { instance.write(str.charAt(i)); } assertThat(read(queue), is("bdfhjlnprtvxz")); }
/** * {@inheritDoc} */ @Override public final void write(Command cmd, boolean last) throws IOException { ByteBufferQueueOutputStream bqos = new ByteBufferQueueOutputStream(sendStaging); ObjectOutputStream oos = AnonymousClassWarnings.checkingObjectOutputStream(bqos); try { cmd.writeTo(channel, oos); } finally { oos.close(); } long remaining = sendStaging.remaining(); channel.notifyWrite(cmd, remaining); while (remaining > 0L) { int frame = remaining > transportFrameSize ? transportFrameSize : (int) remaining; // # of bytes we send in this chunk writeChunkHeader.clear(); ChunkHeader.write(writeChunkHeader, frame, remaining > transportFrameSize); writeChunkHeader.flip(); writeChunkBody.clear(); writeChunkBody.limit(frame); sendStaging.get(writeChunkBody); writeChunkBody.flip(); write(writeChunkHeader, writeChunkBody); remaining -= frame; } }
@Test public void writeAll() throws Exception { String str = "AbCdEfGhIjKlMnOpQrStUvWxYz"; ByteBufferQueue queue = new ByteBufferQueue(10); ByteBufferQueueOutputStream instance = new ByteBufferQueueOutputStream(queue); instance.write(str.getBytes(StandardCharsets.UTF_8)); assertThat(read(queue), is(str)); }
@Test public void writeSome() throws Exception { String str = "AbCdEfGhIjKlMnOpQrStUvWxYz"; ByteBufferQueue queue = new ByteBufferQueue(10); ByteBufferQueueOutputStream instance = new ByteBufferQueueOutputStream(queue); instance.write(str.getBytes(StandardCharsets.UTF_8), 0, 10); assertThat(read(queue), is("AbCdEfGhIj")); }