Java ByteBuffer Slice preservingSlice(final ByteBuffer byteBuffer, final int position, final int limit)

Here you can find the source of preservingSlice(final ByteBuffer byteBuffer, final int position, final int limit)

Description

Slice a portion of the ByteBuffer while preserving the buffers position and limit.

License

Apache License

Parameter

Parameter Description
byteBuffer to slice off of
position to start slice at
limit to slice to

Return

slice of byteBuffer with passed ByteBuffer preserved position and limit.

Declaration

public static ByteBuffer preservingSlice(final ByteBuffer byteBuffer, final int position, final int limit) 

Method Source Code

//package com.java2s;
/**//from  ww  w  .  j  av a 2s  .c o m
 * Copyright 2015 Netflix, Inc.
 * <p>
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * <p>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.nio.ByteBuffer;

public class Main {
    /**
     * Slice a portion of the {@link ByteBuffer} while preserving the buffers position and limit.
     *
     * NOTE: Missing functionality from {@link ByteBuffer}
     *
     * @param byteBuffer to slice off of
     * @param position   to start slice at
     * @param limit      to slice to
     * @return slice of byteBuffer with passed ByteBuffer preserved position and limit.
     */
    public static ByteBuffer preservingSlice(final ByteBuffer byteBuffer, final int position, final int limit) {
        final int savedPosition = byteBuffer.position();
        final int savedLimit = byteBuffer.limit();

        byteBuffer.limit(limit).position(position);

        final ByteBuffer result = byteBuffer.slice();

        byteBuffer.limit(savedLimit).position(savedPosition);
        return result;
    }
}

Related

  1. getSlice(ByteBuffer bb, int offset, int length)
  2. slice(ByteBuffer buf, int pos, int limit)
  3. slice(ByteBuffer buf, int start, int end)
  4. slice(ByteBuffer data)
  5. slice(final ByteBuffer buffer, final int offset, final int length)