001/**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.activemq.kaha.impl.index;
018
019import java.io.IOException;
020import org.apache.activemq.kaha.Marshaller;
021import org.apache.activemq.kaha.StoreEntry;
022
023/**
024 * Simplier than a Map
025 * 
026 * 
027 */
028public interface Index {
029
030    /**
031     * clear the index
032     * 
033     * @throws IOException
034     * 
035     */
036    void clear() throws IOException;
037
038    /**
039     * @param key
040     * @return true if it contains the key
041     * @throws IOException
042     */
043    boolean containsKey(Object key) throws IOException;
044
045    /**
046     * remove the index key
047     * 
048     * @param key
049     * @return StoreEntry removed
050     * @throws IOException
051     */
052    StoreEntry remove(Object key) throws IOException;
053
054    /**
055     * store the key, item
056     * 
057     * @param key
058     * @param entry
059     * @throws IOException
060     */
061    void store(Object key, StoreEntry entry) throws IOException;
062
063    /**
064     * @param key
065     * @return the entry
066     * @throws IOException
067     */
068    StoreEntry get(Object key) throws IOException;
069
070    /**
071     * @return true if the index is transient
072     */
073    boolean isTransient();
074
075    /**
076     * load indexes
077     */
078    void load();
079
080    /**
081     * unload indexes
082     * 
083     * @throws IOException
084     */
085    void unload() throws IOException;
086
087    /**
088     * Set the marshaller for key objects
089     * 
090     * @param marshaller
091     */
092    void setKeyMarshaller(Marshaller marshaller);
093    
094    /**
095     * return the size of the index
096     * @return
097     */
098    int getSize();
099
100    /**
101     * delete all state associated with the index
102     *
103     * @throws IOException
104     */
105    void delete() throws IOException;
106}