< prev index next >

src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/common/Utils.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 462,475 **** public static final ByteBuffer EMPTY_BYTEBUFFER = ByteBuffer.allocate(0); public static final ByteBuffer[] EMPTY_BB_ARRAY = new ByteBuffer[0]; public static final List<ByteBuffer> EMPTY_BB_LIST = List.of(); public static final ByteBufferReference[] EMPTY_BBR_ARRAY = new ByteBufferReference[0]; ! public static ByteBuffer slice(ByteBuffer buffer, int amount) { ByteBuffer newb = buffer.slice(); ! newb.limit(amount); ! buffer.position(buffer.position() + amount); return newb; } /** * Get the Charset from the Content-encoding header. Defaults to --- 462,493 ---- public static final ByteBuffer EMPTY_BYTEBUFFER = ByteBuffer.allocate(0); public static final ByteBuffer[] EMPTY_BB_ARRAY = new ByteBuffer[0]; public static final List<ByteBuffer> EMPTY_BB_LIST = List.of(); public static final ByteBufferReference[] EMPTY_BBR_ARRAY = new ByteBufferReference[0]; ! /** ! * Returns a slice of size {@code amount} from the given buffer. If the ! * buffer contains more data than {@code amount}, then the slice's capacity ! * ( and, but not just, its limit ) is set to {@code amount}. If the buffer ! * does not contain more data than {@code amount}, then the slice's capacity ! * will be the same as the given buffer's capacity. ! */ ! public static ByteBuffer sliceWithLimitedCapacity(ByteBuffer buffer, int amount) { ! final int index = buffer.position() + amount; ! final int limit = buffer.limit(); ! if (index != limit) { ! // additional data in the buffer ! buffer.limit(index); // ensures that the slice does not go beyond ! } else { ! // no additional data in the buffer ! buffer.limit(buffer.capacity()); // allows the slice full capacity ! } ! ByteBuffer newb = buffer.slice(); ! buffer.position(index); ! buffer.limit(limit); // restore the original buffer's limit ! newb.limit(amount); // slices limit to amount (capacity may be greater) return newb; } /** * Get the Charset from the Content-encoding header. Defaults to
< prev index next >