aboutsummaryrefslogtreecommitdiff
path: root/hash
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2019-01-15 23:40:19 +0100
committerDimitri Sokolyuk <demon@dim13.org>2019-01-15 23:40:19 +0100
commit7550eb651c14a35c42d3aedb11daa49e6fc2f63e (patch)
tree7ce9469859a75eb9e26fd29a7ae5bb5103d0b3b6 /hash
parent4aaf55814f7ede26a1035e4837ce7aeeeb11d581 (diff)
adjust interface
Diffstat (limited to 'hash')
-rw-r--r--hash/hash.go83
-rw-r--r--hash/hash_func.go9
-rw-r--r--hash/hash_func_test.go28
-rw-r--r--hash/hash_test.go26
-rw-r--r--hash/testdata/aliases.dbbin65536 -> 0 bytes
5 files changed, 0 insertions, 146 deletions
diff --git a/hash/hash.go b/hash/hash.go
deleted file mode 100644
index c159e78..0000000
--- a/hash/hash.go
+++ /dev/null
@@ -1,83 +0,0 @@
-package hash
-
-type Action int
-
-// Operations
-const (
- HashGet Action = iota
- HashPut
- HashPutNew
- HashDelete
- HashFirst
- HashNext
-)
-
-const (
- BufMod = 1 << iota
- BufDisk
- BufBucket
- BufPin
-)
-
-type BufHead struct {
- Prev *BufHead // LRU links
- Next *BufHead // LRU links
- Ovrlf *BufHead // Overflow page buffer header
- Addr uint32 // Address of this page
- Page []byte // Actual page data
- Flags byte
-}
-
-type Segment *BufHead
-
-// HTab is memroy resident data structure
-type HTab struct {
- Hdr HashHdr // Header
- NSegs int // Number of allocated segments
- ExSegs int // Number of extra allocated
- Hash func(interface{}, int64) uint32 // Hash function
- Flags int // Flag values
- FP int // File pointer
- TmpBuf []byte // Temprory Buffer for BIG data
- TmpKey []byte // Temprory Buffer for BIG keys
- CPage BufHead // Currrent page
- CBucket int // Current bucket
- Err int // Error Number -- for DBM compatibility
- NewFile int // Indicates if fd is backing store or not
- SaveFile int // Indicates whether we need to flush file at exit
- Mapp [nCached]uint32 // Pointers to page maps
- NMaps int // Initial number of bitmaps
- NBufs int // Number of buffers left to allocate
- BufHead BufHead // Header of buffer lru list
- Dir Segment // Hash Bucket directory
-}
-
-const nCached = 32 // number of bit maps and spare points
-
-// HashHdr holds hash table invormation
-type HashHdr struct {
- Magic int32 // Magic NO for hash tables
- Version int32 // Version ID
- LOrder uint32 // Byte Order
- BSize int32 // Bucket/Page Size
- BShift int32 // Bucket shift
- DSize int32 // Directory Size
- SSize int32 // Segment Size
- SShift int32 // Segment shift
- OvflPoint int32 // Where overflow pages are being allocated
- LastFreed int32 // Last overflow page freed
- MaxBucket int32 // ID of Maximum bucket in use
- HighMask int32 // Mask to modulo into entire table
- LowMask int32 // Mask to modulo into lower half of table
- FFactor int32 // Fill factor
- NKeys int32 // Number of keys in hash table
- HdrPages int32 // Size of table header
- HCharkey int32 // value of hash(CHARKEY)
- Spares [nCached]int32 // spare pages for overflow
- Bitmaps [nCached]uint16 // address of overflow page bitmaps
-}
-
-const (
- hashMagic = 0x061561
- hashVersion = 2
-)
diff --git a/hash/hash_func.go b/hash/hash_func.go
deleted file mode 100644
index 853412b..0000000
--- a/hash/hash_func.go
+++ /dev/null
@@ -1,9 +0,0 @@
-package hash
-
-func defaultHash(key []byte) uint32 {
- var h uint32
- for _, v := range key {
- h = (h << 5) + h + uint32(v)
- }
- return h
-}
diff --git a/hash/hash_func_test.go b/hash/hash_func_test.go
deleted file mode 100644
index 5ce39b4..0000000
--- a/hash/hash_func_test.go
+++ /dev/null
@@ -1,28 +0,0 @@
-package hash
-
-import "testing"
-
-func TestDefaultHash(t *testing.T) {
- testCases := []struct {
- key string
- hash uint32
- }{
- {"", 0},
- {"A", 65},
- {"AA", 2210},
- {"AAA", 72995},
- {"AAAA", 2408900},
- {"AAAAA", 79493765},
- {"AAAAAA", 2623294310},
- {"AAAAAAA", 669366375},
- {"AAAAAAAA", 614253960},
- }
- for _, tc := range testCases {
- t.Run(tc.key, func(t *testing.T) {
- x := defaultHash([]byte(tc.key))
- if x != tc.hash {
- t.Errorf("got %v, want %v", x, tc.hash)
- }
- })
- }
-}
diff --git a/hash/hash_test.go b/hash/hash_test.go
deleted file mode 100644
index 0526146..0000000
--- a/hash/hash_test.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package hash
-
-import (
- "encoding/binary"
- "os"
- "testing"
-)
-
-func TestOpen(t *testing.T) {
- fd, err := os.Open("testdata/aliases.db")
- if err != nil {
- t.Fatal(err)
- }
- defer fd.Close()
- var hdr HashHdr
- if err := binary.Read(fd, binary.BigEndian, &hdr); err != nil {
- t.Fatal(err)
- }
- if hdr.Magic != hashMagic {
- t.Errorf("got %x, want %x", hdr.Magic, hashMagic)
- }
- if hdr.Version != hashVersion {
- t.Errorf("got %x, want %x", hdr.Version, hashVersion)
- }
- t.Logf("%+v", hdr)
-}
diff --git a/hash/testdata/aliases.db b/hash/testdata/aliases.db
deleted file mode 100644
index 0fb69a5..0000000
--- a/hash/testdata/aliases.db
+++ /dev/null
Binary files differ