aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/src/dets.hrl
diff options
context:
space:
mode:
authorErlang/OTP <[email protected]>2009-11-20 14:54:40 +0000
committerErlang/OTP <[email protected]>2009-11-20 14:54:40 +0000
commit84adefa331c4159d432d22840663c38f155cd4c1 (patch)
treebff9a9c66adda4df2106dfd0e5c053ab182a12bd /lib/stdlib/src/dets.hrl
downloadotp-84adefa331c4159d432d22840663c38f155cd4c1.tar.gz
otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.bz2
otp-84adefa331c4159d432d22840663c38f155cd4c1.zip
The R13B03 release.OTP_R13B03
Diffstat (limited to 'lib/stdlib/src/dets.hrl')
-rw-r--r--lib/stdlib/src/dets.hrl126
1 files changed, 126 insertions, 0 deletions
diff --git a/lib/stdlib/src/dets.hrl b/lib/stdlib/src/dets.hrl
new file mode 100644
index 0000000000..6e59770753
--- /dev/null
+++ b/lib/stdlib/src/dets.hrl
@@ -0,0 +1,126 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2001-2009. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%
+
+-define(DEFAULT_MIN_NO_SLOTS, 256).
+-define(DEFAULT_MAX_NO_SLOTS, 2*1024*1024).
+-define(DEFAULT_AUTOSAVE, 3). % minutes
+-define(DEFAULT_CACHE, {3000, 14000}). % {delay,size} in {milliseconds,bytes}
+
+%% Type.
+-define(SET, 1).
+-define(BAG, 2).
+-define(DUPLICATE_BAG, 3).
+
+-define(MAGIC, 16#0abcdef). % dets cookie, won't ever change.
+%% Status values.
+-define(FREE, 16#3abcdef).
+-define(ACTIVE, 16#12345678).
+
+-define(FILE_FORMAT_VERSION_POS, 16).
+
+-define(CHUNK_SIZE, 8192).
+
+-define(SERVER_NAME, dets).
+
+-define(POW(X), (1 bsl (X))).
+
+%% REM2(A,B) = A rem B, if B is a power of 2.
+-define(REM2(A, B), ((A) band ((B)-1))).
+
+-define(DETS_CALL(Pid, Req), {'$dets_call', Pid, Req}).
+
+%% Record holding the file header and more.
+-record(head, {
+ m, % size
+ m2, % m * 2
+ next, % next position for growth (segm mgmt only)
+ fptr, % the file descriptor
+ no_objects, % number of objects in table,
+ no_keys, % number of keys (version 9 only)
+ maxobjsize, % 2-log of the size of the biggest object
+ % collection (version 9 only)
+ n, % split indicator
+ type, % set | bag | duplicate_bag
+ keypos, % default is 1 as for ets
+ freelists, % tuple of free lists of buddies
+ % if fixed =/= false, then a pair of freelists
+ freelists_p, % cached FreelistsPointer
+ no_collections, % [{LogSize,NoCollections}] | undefined; number of
+ % object collections per size (version 9(b))
+ auto_save, % Integer | infinity
+ update_mode, % saved | dirty | new_dirty | {error, Reason}
+ fixed = false, % false | {now_time(), [{pid(),Counter}]}
+ % time of first fix, and number of fixes per process
+ hash_bif, % hash bif used for this file (phash2, phash, hash)
+ has_md5, % whether the header has an MD5 sum (version 9(c))
+ min_no_slots, % minimum number of slots (default or integer)
+ max_no_slots, % maximum number of slots (default or integer)
+ cache, % cache(). Write cache.
+
+ filename, % name of the file being used
+ access = read_write, % read | read_write
+ ram_file = false, % true | false
+ name, % the name of the table
+
+ parent, % The supervisor of Dets processes.
+ server, % The creator of Dets processes.
+
+ %% Depending on the file format:
+ version,
+ mod,
+ bump,
+ base
+
+ }).
+
+%% Info extracted from the file header.
+-record(fileheader, {
+ freelist,
+ cookie,
+ closed_properly,
+ type,
+ version,
+ m,
+ next,
+ keypos,
+ no_objects,
+ no_keys,
+ min_no_slots,
+ max_no_slots,
+ no_colls,
+ hash_method,
+ read_md5,
+ has_md5,
+ md5,
+ trailer,
+ eof,
+ n,
+ mod
+ }).
+
+%% Write Cache.
+-record(cache, {
+ cache, % [{Key,{Seq,Item}}], write cache, last item first
+ csize, % current size of the cached items
+ inserts, % upper limit on number of inserted keys
+ wrtime, % last write or update time
+ tsize, % threshold size of cache, in bytes
+ delay % max time items are kept in RAM only, in milliseconds
+ }).
+