summaryrefslogtreecommitdiff
path: root/lang/java/src/com/sleepycat/db/DatabaseStreamConfig.java
diff options
context:
space:
mode:
Diffstat (limited to 'lang/java/src/com/sleepycat/db/DatabaseStreamConfig.java')
-rw-r--r--lang/java/src/com/sleepycat/db/DatabaseStreamConfig.java93
1 files changed, 93 insertions, 0 deletions
diff --git a/lang/java/src/com/sleepycat/db/DatabaseStreamConfig.java b/lang/java/src/com/sleepycat/db/DatabaseStreamConfig.java
new file mode 100644
index 00000000..f8f88033
--- /dev/null
+++ b/lang/java/src/com/sleepycat/db/DatabaseStreamConfig.java
@@ -0,0 +1,93 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2013, 2015 Oracle and/or its affiliates. All rights reserved.
+ *
+ * $Id$
+ */
+
+package com.sleepycat.db;
+
+import com.sleepycat.db.internal.DbConstants;
+import com.sleepycat.db.internal.DbStream;
+import com.sleepycat.db.internal.Dbc;
+
+/**
+Specify the attributes of database stream. An instance created with the
+default constructor is initialized with the system's default settings.
+*/
+public class DatabaseStreamConfig implements Cloneable {
+ private boolean readOnly = false;
+ private boolean readOnlyIsSet = false;
+ private boolean syncPerWrite = false;
+
+ /**
+ Default configuration used if null is passed to methods that create a
+ database stream.
+ */
+ public static final DatabaseStreamConfig DEFAULT =
+ new DatabaseStreamConfig();
+
+ /* package */
+ static DatabaseStreamConfig checkNull(DatabaseStreamConfig config) {
+ return (config == null) ? DEFAULT : config;
+ }
+
+ /**
+ Configure the database stream as read only.
+ <p>
+ @param readOnly
+ If true, configure the database stream to read only.
+ */
+ public void setReadOnly(final boolean readOnly) {
+ this.readOnlyIsSet = true;
+ this.readOnly = readOnly;
+ }
+
+ /**
+ Return true if the database stream is read only.
+ <p>
+ @return
+ true if the database stream is configured to read only.
+ */
+ public boolean getReadOnly() {
+ return readOnly;
+ }
+
+ /**
+ Configure the database stream to sync the blob on each write.
+ <p>
+ @param syncPerWrite
+ If true, configure the database stream to sync the blob on
+ each write.
+ */
+ public void setSyncPerWrite(final boolean syncPerWrite) {
+ this.syncPerWrite = syncPerWrite;
+ }
+
+ /**
+ Return if the database stream is configured to sync the blob
+ on each write.
+ <p>
+ @return
+ true if the database stream is configured to sync the blob
+ on each write, and false otherwise.
+ */
+ public boolean getSyncPerWrite() {
+ return syncPerWrite;
+ }
+
+ /* package */
+ DbStream openDatabaseStream(final Dbc dbc)
+ throws DatabaseException {
+
+ int flags = 0;
+ if (readOnlyIsSet)
+ flags |= readOnly ? DbConstants.DB_STREAM_READ :
+ DbConstants.DB_STREAM_WRITE;
+ if (syncPerWrite)
+ flags |= DbConstants.DB_STREAM_SYNC_WRITE;
+ return dbc.db_stream(flags);
+ }
+
+}