1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2009, 2015 Oracle and/or its affiliates. All rights reserved.
*
*/
using System;
using System.Collections.Generic;
using System.Text;
namespace BerkeleyDB {
/// <summary>
/// A class representing configuration parameters for
/// <see cref="SecondaryQueueDatabase"/>
/// </summary>
public class SecondaryQueueDatabaseConfig : SecondaryDatabaseConfig {
internal bool lengthIsSet;
private uint len;
/// <summary>
/// Specify the length of records in the database.
/// </summary>
/// <remarks>
/// <para>
/// The record length must be enough smaller than
/// <see cref="DatabaseConfig.PageSize"/> that at least one record plus
/// the database page's metadata information can fit on each database
/// page.
/// </para>
/// <para>
/// Any records added to the database that are less than Length bytes
/// long are automatically padded (see <see cref="PadByte"/> for more
/// information).
/// </para>
/// <para>
/// Any attempt to insert records into the database that are greater
/// than Length bytes long cause the call to fail immediately and
/// return an error.
/// </para>
/// <para>
/// If the database already exists, this setting is ignored.
/// </para>
/// </remarks>
public uint Length {
get { return len; }
set {
lengthIsSet = true;
len = value;
}
}
/// <summary>
/// The policy for how to handle database creation.
/// </summary>
/// <remarks>
/// If the database does not already exist and
/// <see cref="CreatePolicy.NEVER"/> is set,
/// <see cref="SecondaryQueueDatabase.Open"/> fails.
/// </remarks>
public CreatePolicy Creation;
internal new uint openFlags {
get {
uint flags = base.openFlags;
flags |= (uint)Creation;
return flags;
}
}
internal bool padIsSet;
private int pad;
/// <summary>
/// The padding character for short, fixed-length records.
/// </summary>
/// <remarks>
/// <para>
/// If no pad character is specified, space characters (ASCII
/// 0x20) are used for padding.
/// </para>
/// <para>
/// If the database already exists, this setting is ignored.
/// </para>
/// </remarks>
public int PadByte {
get { return pad; }
set {
padIsSet = true;
pad = value;
}
}
internal bool extentIsSet;
private uint extentSz;
/// <summary>
/// The size of the extents used to hold pages in a
/// <see cref="SecondaryQueueDatabase"/>, specified as a number of
/// pages.
/// </summary>
/// <remarks>
/// <para>
/// Each extent is created as a separate physical file. If no extent
/// size is set, the default behavior is to create only a single
/// underlying database file.
/// </para>
/// <para>
/// For information on tuning the extent size, see Selecting a extent
/// size in the Programmer's Reference Guide.
/// </para>
/// <para>
/// If the database already exists, this setting is ignored.
/// </para>
/// </remarks>
public uint ExtentSize {
get { return extentSz; }
set {
extentIsSet = true;
extentSz = value;
}
}
/// <summary>
/// Instantiate a new SecondaryQueueDatabaseConfig object
/// </summary>
public SecondaryQueueDatabaseConfig(
Database PrimaryDB, SecondaryKeyGenDelegate KeyGenFunc)
: base(PrimaryDB, KeyGenFunc) {
lengthIsSet = false;
padIsSet = false;
extentIsSet = false;
DbType = DatabaseType.QUEUE;
}
}
}
|