Search in sources :

Example 1 with BinaryWriter

use of net.morimekta.util.io.BinaryWriter in project providence by morimekta.

the class FramedBufferOutputStream method completeFrame.

/**
 * Write the frame at the current state, and reset the buffer to be able to
 * generate a new frame.
 *
 * @throws IOException On failed write.
 */
public void completeFrame() throws IOException {
    int frameSize = buffer.position();
    if (frameSize > 0) {
        frameSizeBuffer.rewind();
        try (ByteBufferOutputStream bos = new ByteBufferOutputStream(frameSizeBuffer);
            BinaryWriter writer = new BigEndianBinaryWriter(bos)) {
            writer.writeInt(frameSize);
            bos.flush();
        }
        frameSizeBuffer.flip();
        buffer.flip();
        synchronized (out) {
            out.write(frameSizeBuffer);
            while (buffer.hasRemaining()) {
                out.write(buffer);
            }
        }
        buffer.rewind();
        buffer.limit(buffer.capacity());
    }
}
Also used : ByteBufferOutputStream(net.morimekta.util.io.ByteBufferOutputStream) BigEndianBinaryWriter(net.morimekta.util.io.BigEndianBinaryWriter) BinaryWriter(net.morimekta.util.io.BinaryWriter) BigEndianBinaryWriter(net.morimekta.util.io.BigEndianBinaryWriter)

Aggregations

BigEndianBinaryWriter (net.morimekta.util.io.BigEndianBinaryWriter)1 BinaryWriter (net.morimekta.util.io.BinaryWriter)1 ByteBufferOutputStream (net.morimekta.util.io.ByteBufferOutputStream)1