Search in sources :

Example 1 with DataGenerator

use of org.eclipse.jetty.http2.generator.DataGenerator in project jetty.project by eclipse.

the class DataGenerateParseTest method testGenerateParse.

private List<DataFrame> testGenerateParse(ByteBuffer data) {
    DataGenerator generator = new DataGenerator(new HeaderGenerator());
    final List<DataFrame> frames = new ArrayList<>();
    Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() {

        @Override
        public void onData(DataFrame frame) {
            frames.add(frame);
        }
    }, 4096, 8192);
    // Iterate a few times to be sure generator and parser are properly reset.
    for (int i = 0; i < 2; ++i) {
        ByteBufferPool.Lease lease = new ByteBufferPool.Lease(byteBufferPool);
        ByteBuffer slice = data.slice();
        int generated = 0;
        while (true) {
            generated += generator.generateData(lease, 13, slice, true, slice.remaining());
            generated -= Frame.HEADER_LENGTH;
            if (generated == data.remaining())
                break;
        }
        frames.clear();
        for (ByteBuffer buffer : lease.getByteBuffers()) {
            parser.parse(buffer);
        }
    }
    return frames;
}
Also used : MappedByteBufferPool(org.eclipse.jetty.io.MappedByteBufferPool) ByteBufferPool(org.eclipse.jetty.io.ByteBufferPool) ArrayList(java.util.ArrayList) ByteBuffer(java.nio.ByteBuffer) Parser(org.eclipse.jetty.http2.parser.Parser) DataGenerator(org.eclipse.jetty.http2.generator.DataGenerator) HeaderGenerator(org.eclipse.jetty.http2.generator.HeaderGenerator)

Example 2 with DataGenerator

use of org.eclipse.jetty.http2.generator.DataGenerator in project jetty.project by eclipse.

the class DataGenerateParseTest method testGenerateParseOneByteAtATime.

@Test
public void testGenerateParseOneByteAtATime() {
    DataGenerator generator = new DataGenerator(new HeaderGenerator());
    final List<DataFrame> frames = new ArrayList<>();
    Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() {

        @Override
        public void onData(DataFrame frame) {
            frames.add(frame);
        }
    }, 4096, 8192);
    // Iterate a few times to be sure generator and parser are properly reset.
    for (int i = 0; i < 2; ++i) {
        ByteBufferPool.Lease lease = new ByteBufferPool.Lease(byteBufferPool);
        ByteBuffer data = ByteBuffer.wrap(largeContent);
        ByteBuffer slice = data.slice();
        int generated = 0;
        while (true) {
            generated += generator.generateData(lease, 13, slice, true, slice.remaining());
            generated -= Frame.HEADER_LENGTH;
            if (generated == data.remaining())
                break;
        }
        frames.clear();
        for (ByteBuffer buffer : lease.getByteBuffers()) {
            while (buffer.hasRemaining()) {
                parser.parse(ByteBuffer.wrap(new byte[] { buffer.get() }));
            }
        }
        Assert.assertEquals(largeContent.length, frames.size());
    }
}
Also used : MappedByteBufferPool(org.eclipse.jetty.io.MappedByteBufferPool) ByteBufferPool(org.eclipse.jetty.io.ByteBufferPool) ArrayList(java.util.ArrayList) ByteBuffer(java.nio.ByteBuffer) Parser(org.eclipse.jetty.http2.parser.Parser) DataGenerator(org.eclipse.jetty.http2.generator.DataGenerator) HeaderGenerator(org.eclipse.jetty.http2.generator.HeaderGenerator) Test(org.junit.Test)

Aggregations

ByteBuffer (java.nio.ByteBuffer)2 ArrayList (java.util.ArrayList)2 DataGenerator (org.eclipse.jetty.http2.generator.DataGenerator)2 HeaderGenerator (org.eclipse.jetty.http2.generator.HeaderGenerator)2 Parser (org.eclipse.jetty.http2.parser.Parser)2 ByteBufferPool (org.eclipse.jetty.io.ByteBufferPool)2 MappedByteBufferPool (org.eclipse.jetty.io.MappedByteBufferPool)2 Test (org.junit.Test)1