All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ldaptive.asn1.DefaultDERBuffer Maven / Gradle / Ivy

The newest version!
/* See LICENSE for licensing and NOTICE for copyright. */
package org.ldaptive.asn1;

import java.nio.ByteBuffer;

/**
 * {@link DERBuffer} that uses a {@link ByteBuffer}.
 *
 * @author  Middleware Services
 */
public class DefaultDERBuffer implements DERBuffer
{

  /** Underlying byte buffer. */
  private final ByteBuffer buffer;


  /**
   * Creates a new default DER buffer. See {@link ByteBuffer#allocate(int)}.
   *
   * @param  capacity  of this buffer
   */
  public DefaultDERBuffer(final int capacity)
  {
    buffer = ByteBuffer.allocate(capacity);
  }


  /**
   * Creates a new default DER buffer. See {@link ByteBuffer#wrap(byte[])}.
   *
   * @param  array  contents of the buffer
   */
  public DefaultDERBuffer(final byte[] array)
  {
    buffer = ByteBuffer.wrap(array);
  }


  /**
   * Creates a new default DER buffer.
   *
   * @param  buf  existing byte buffer
   */
  public DefaultDERBuffer(final ByteBuffer buf)
  {
    buffer = buf;
  }


  /**
   * Creates a new default DER buffer and sets the initial position and limit.
   *
   * @param  buf  existing byte buffer
   * @param  pos  initial buffer position
   * @param  lim  initial buffer limit
   */
  public DefaultDERBuffer(final ByteBuffer buf, final int pos, final int lim)
  {
    buffer = buf;
    buffer.position(pos);
    buffer.limit(lim);
  }


  @Override
  public int position()
  {
    return buffer.position();
  }


  @Override
  public DERBuffer position(final int newPosition)
  {
    buffer.position(newPosition);
    return this;
  }


  @Override
  public int limit()
  {
    return buffer.limit();
  }


  @Override
  public int capacity()
  {
    return buffer.capacity();
  }


  @Override
  public DERBuffer limit(final int newLimit)
  {
    buffer.limit(newLimit);
    return this;
  }


  @Override
  public DERBuffer clear()
  {
    buffer.clear();
    return this;
  }


  @Override
  public byte get()
  {
    return buffer.get();
  }


  @Override
  public DERBuffer get(final byte[] dst)
  {
    buffer.get(dst);
    return this;
  }


  @Override
  public DERBuffer slice()
  {
    return new DefaultDERBuffer(buffer.slice());
  }


  @Override
  public String toString()
  {
    return getClass().getName() + "@" + hashCode() + "::" +
      "pos=" + position() + ", " +
      "lim=" + limit() + ", " +
      "cap=" + capacity();
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy