org.apache.activemq.store.kahadb.KahaDBMetaData Maven / Gradle / Ivy
/**
* 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.activemq.store.kahadb;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import org.apache.activemq.store.kahadb.disk.journal.Location;
import org.apache.activemq.store.kahadb.disk.page.Page;
import org.apache.activemq.store.kahadb.disk.page.Transaction;
/**
* Interface for the store meta data used to hold the index value and other needed
* information to manage a KahaDB store instance.
*/
public interface KahaDBMetaData {
/**
* Indicates that this meta data instance has been opened and is active.
*/
public static final int OPEN_STATE = 2;
/**
* Indicates that this meta data instance has been closed and is no longer active.
*/
public static final int CLOSED_STATE = 1;
/**
* Gets the Page in the store PageFile where the KahaDBMetaData instance is stored.
*
* @return the Page to use to start access the KahaDBMetaData instance.
*/
Page getPage();
/**
* Sets the Page instance used to load and store the KahaDBMetaData instance.
*
* @param page
* the new Page value to use.
*/
void setPage(Page page);
/**
* Gets the state flag of this meta data instance.
*
* @return the current state value for this instance.
*/
int getState();
/**
* Sets the current value of the state flag.
*
* @param value
* the new value to assign to the state flag.
*/
void setState(int value);
/**
* Returns the Journal Location value that indicates that last recorded update
* that was successfully performed for this KahaDB store implementation.
*
* @return the location of the last successful update location.
*/
Location getLastUpdateLocation();
/**
* Updates the value of the last successful update.
*
* @param location
* the new value to assign the last update location field.
*/
void setLastUpdateLocation(Location location);
/**
* For a newly created KahaDBMetaData instance this method is called to allow
* the instance to create all of it's internal indices and other state data.
*
* @param tx
* the Transaction instance under which the operation is executed.
*
* @throws IOException if an error occurs while creating the meta data structures.
*/
void initialize(Transaction tx) throws IOException;
/**
* Instructs this object to load its internal data structures from the KahaDB PageFile
* and prepare itself for use.
*
* @param tx
* the Transaction instance under which the operation is executed.
*
* @throws IOException if an error occurs while creating the meta data structures.
*/
void load(Transaction tx) throws IOException;
/**
* Reads the serialized for of this object from the KadaDB PageFile and prepares it
* for use. This method does not need to perform a full load of the meta data structures
* only read in the information necessary to load them from the PageFile on a call to the
* load method.
*
* @param in
* the DataInput instance used to read this objects serialized form.
*
* @throws IOException if an error occurs while reading the serialized form.
*/
void read(DataInput in) throws IOException;
/**
* Writes the object into a serialized form which can be read back in again using the
* read method.
*
* @param out
* the DataOutput instance to use to write the current state to a serialized form.
*
* @throws IOException if an error occurs while serializing this instance.
*/
void write(DataOutput out) throws IOException;
}