/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 * * http://www.apache.org/licenses/LICENSE-2.0 * * 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. */ package org.apache.blur.store.blockcache_v2; import javax.swing.text.Position; public interface CacheValue { /** * Detach from the base cache. * * @return old cache value. */ CacheValue detachFromCache(); /** * The length of the data in this block. * * @return the length. * @throws EvictionException */ int length() throws EvictionException; /** * Writes data out to a given position in this block. * * @param position * the position. * @param buf * the buffer. * @param offset * the offset in the buffer. * @param length * the length of bytes to write. */ void write(int position, byte[] buf, int offset, int length); /** * Reads data into the buffer given the position. * * @param position * the position to read. * @param buf * the buffer to read into. * @param offset * the offset within the buffer. * @param length * the length of data to read. */ void read(int position, byte[] buf, int offset, int length) throws EvictionException; /** * Reads a byte from the given position. * * @param position * the position. * @return the byte. */ byte read(int position) throws EvictionException; /** * Releases any underlying resources. */ void release(); /** * Reads a short from the given position. * * @param position * the {@link Position} to read from. * @return the short. */ short readShort(int position) throws EvictionException; /** * Reads a int from the given position. * * @param position * the {@link Position} to read from. * @return the int. */ int readInt(int position) throws EvictionException; /** * Reads a long from the given position. * * @param position * the {@link Position} to read from. * @return the long. */ long readLong(int position) throws EvictionException; /** * This method <i>may</i> trim the existing {@link CacheValue} and produce * potentially a new {@link CacheValue} with the same data up to the length * provided. Also if a new {@link CacheValue} is produced then this method is * responsible to calling release on the old {@link CacheValue}. * * @param length * the valid amount of data in the {@link CacheValue}. * @return new trim {@link CacheValue} that has been trimmed if needed. */ CacheValue trim(int length); boolean isEvicted(); }