aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/com/healthmarketscience/jackcess/impl/CodecHandler.java
diff options
context:
space:
mode:
authorJames Ahlborn <jtahlborn@yahoo.com>2013-08-16 02:09:48 +0000
committerJames Ahlborn <jtahlborn@yahoo.com>2013-08-16 02:09:48 +0000
commit417fb06208f50cbf164a1c101ac03c7bae0856d8 (patch)
tree52217c1c09bc71377ca0f422ed43d24d6917a178 /src/main/java/com/healthmarketscience/jackcess/impl/CodecHandler.java
parent790b943d773fc72a11089b6acaf17aa341f92ae4 (diff)
downloadjackcess-417fb06208f50cbf164a1c101ac03c7bae0856d8.tar.gz
jackcess-417fb06208f50cbf164a1c101ac03c7bae0856d8.zip
move files into standard maven dir structure
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@781 f203690c-595d-4dc9-a70b-905162fa7fd2
Diffstat (limited to 'src/main/java/com/healthmarketscience/jackcess/impl/CodecHandler.java')
-rw-r--r--src/main/java/com/healthmarketscience/jackcess/impl/CodecHandler.java78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/main/java/com/healthmarketscience/jackcess/impl/CodecHandler.java b/src/main/java/com/healthmarketscience/jackcess/impl/CodecHandler.java
new file mode 100644
index 0000000..944ac08
--- /dev/null
+++ b/src/main/java/com/healthmarketscience/jackcess/impl/CodecHandler.java
@@ -0,0 +1,78 @@
+/*
+Copyright (c) 2010 James Ahlborn
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+USA
+*/
+
+package com.healthmarketscience.jackcess.impl;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+/**
+ * Interface for a handler which can encode/decode a specific access page
+ * encoding.
+ *
+ * @author James Ahlborn
+ */
+public interface CodecHandler
+{
+ /**
+ * Returns {@code true} if this handler can encode partial pages,
+ * {@code false} otherwise. If this method returns {@code false}, the
+ * {@link #encodePage} method will never be called with a non-zero
+ * pageOffset.
+ */
+ public boolean canEncodePartialPage();
+
+ /**
+ * Returns {@code true} if this handler can decode a page inline,
+ * {@code false} otherwise. If this method returns {@code false}, the
+ * {@link #decodePage} method will always be called with separate buffers.
+ */
+ public boolean canDecodeInline();
+
+ /**
+ * Decodes the given page buffer.
+ *
+ * @param inPage the page to be decoded
+ * @param outPage the decoded page. if {@link #canDecodeInline} is {@code
+ * true}, this will be the same buffer as inPage.
+ * @param pageNumber the page number of the given page
+ *
+ * @throws IOException if an exception occurs during decoding
+ */
+ public void decodePage(ByteBuffer inPage, ByteBuffer outPage, int pageNumber)
+ throws IOException;
+
+ /**
+ * Encodes the given page buffer into a new page buffer and returns it. The
+ * returned page buffer will be used immediately and discarded so that it
+ * may be re-used for subsequent page encodings.
+ *
+ * @param page the page to be encoded, should not be modified
+ * @param pageNumber the page number of the given page
+ * @param pageOffset offset within the page at which to start writing the
+ * page data
+ *
+ * @throws IOException if an exception occurs during decoding
+ *
+ * @return the properly encoded page buffer for the given page buffer
+ */
+ public ByteBuffer encodePage(ByteBuffer page, int pageNumber,
+ int pageOffset)
+ throws IOException;
+}