001: /*
002:
003: Derby - Class org.apache.derby.iapi.store.raw.data.RawContainerHandle
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to you under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021:
022: package org.apache.derby.iapi.store.raw.data;
023:
024: import org.apache.derby.iapi.store.raw.ContainerHandle;
025: import org.apache.derby.iapi.store.raw.Page;
026: import org.apache.derby.iapi.store.raw.log.LogInstant;
027:
028: import org.apache.derby.iapi.error.StandardException;
029:
030: import org.apache.derby.iapi.util.ByteArray;
031:
032: /**
033: RawContainerHandle is the form of ContainerHandle that is used within
034: the raw store. This allows the raw store to have a handle on dropped
035: container without exposing this to the external interface, which is not
036: allowed to get back a handle on a dropped container
037: */
038:
039: public interface RawContainerHandle extends ContainerHandle {
040:
041: /** A container can be in 4 states:
042: non_existent - this is represented by a null ContainerHandle
043:
044: NORMAL - this is the normal case, container has been created and is not dropped.
045: DROPPED - container has been dropped, but is not known whether the drop
046: has been committed or not
047: COMMITTED_DROP - container has been dropped and has committed. To
048: everyone else except recovery, this state is equivalent
049: to NON_EXISTENT
050: */
051: public static final int NORMAL = 1;
052: public static final int DROPPED = 2;
053: public static final int COMMITTED_DROP = 4;
054:
055: /**
056: Return the status of the container - one of NORMAL, DROPPED, COMMITTED_DROP.
057: @exception StandardException Standard cloudscape exception policy
058: */
059: public int getContainerStatus() throws StandardException;
060:
061: /**
062: Remove the container.
063:
064: @exception StandardException Standard cloudscape exception policy
065: */
066: public void removeContainer(LogInstant instant)
067: throws StandardException;
068:
069: /**
070: If drop is true, drop the container. if drop is false, un-drop the
071: container
072: @exception StandardException Standard cloudscape exception policy
073: */
074: public void dropContainer(LogInstant instant, boolean drop)
075: throws StandardException;
076:
077: /**
078: Get the logged container version
079: @exception StandardException Standard cloudscape exception policy
080: */
081: public long getContainerVersion() throws StandardException;
082:
083: /**
084: Return a Page that represents any page - alloc page, valid page, free page,
085: dealloced page etc.
086:
087: @exception StandardException Standard Cloudscape error policy
088: */
089: public Page getAnyPage(long pageNumber) throws StandardException;
090:
091: /** Backup restore support */
092:
093: /**
094: ReCreate a page for redo recovery.
095:
096: Used during redo recovery while trying to apply log records which
097: are creating the page.
098:
099: @exception StandardException Standard Cloudscape error policy
100: */
101: public Page reCreatePageForRedoRecovery(int pageFormat,
102: long pageNumber, long pageOffset) throws StandardException;
103:
104: /**
105: Log all information necessary to recreate the container during a load
106: tran.
107:
108: @exception StandardException Standard Cloudscape error policy
109: */
110: public ByteArray logCreateContainerInfo() throws StandardException;
111:
112: /**
113: The container is about to be modified.
114: Loggable actions use this to make sure the container gets cleaned if a
115: checkpoint is taken after any log record is sent to the log stream but
116: before the container is actually dirtied.
117:
118: @exception StandardException Standard Cloudscape error policy
119: */
120: public void preDirty(boolean preDirtyOn) throws StandardException;
121:
122: /**
123: * Create encrypted version of the container with the
124: * user specified encryption properties.
125: * @param newFilePath file to store the new encrypted version of the container
126: * @exception StandardException Standard Cloudscape error policy
127: */
128: public void encryptContainer(String newFilePath)
129: throws StandardException;
130:
131: }
|