mirror of
https://bitbucket.org/s_l_teichmann/mtsatellite
synced 2024-11-13 05:40:20 +01:00
Made size of hashes LRU cache a parameter set by the webmapper.
This commit is contained in:
parent
7cbe2e516c
commit
bae7e7c3e6
|
@ -24,6 +24,9 @@ import (
|
|||
"bitbucket.org/s_l_teichmann/mtsatellite/common"
|
||||
)
|
||||
|
||||
// Number of check sums to keep in memory.
|
||||
const maxHashedTiles = 256
|
||||
|
||||
type baseTilesUpdates interface {
|
||||
BaseTilesUpdated([]xz)
|
||||
}
|
||||
|
@ -177,7 +180,7 @@ func activeChanges(changes []xzc) []xz {
|
|||
|
||||
func (tu *tileUpdater) doUpdates() {
|
||||
|
||||
bth := common.NewBaseTileHash()
|
||||
bth := common.NewBaseTileHash(maxHashedTiles)
|
||||
|
||||
baseDir := filepath.Join(tu.mapDir, "8")
|
||||
|
||||
|
|
|
@ -9,8 +9,6 @@ import (
|
|||
"sync"
|
||||
)
|
||||
|
||||
const btMaxEntries = 256
|
||||
|
||||
type btKey struct {
|
||||
x int
|
||||
y int
|
||||
|
@ -24,14 +22,16 @@ type btHashEntry struct {
|
|||
}
|
||||
|
||||
type BaseTileHash struct {
|
||||
hashes map[btKey]*btHashEntry
|
||||
root btHashEntry
|
||||
hashes map[btKey]*btHashEntry
|
||||
maxEntries int
|
||||
root btHashEntry
|
||||
sync.Mutex
|
||||
}
|
||||
|
||||
func NewBaseTileHash() *BaseTileHash {
|
||||
func NewBaseTileHash(maxEntries int) *BaseTileHash {
|
||||
bth := &BaseTileHash{
|
||||
hashes: map[btKey]*btHashEntry{}}
|
||||
hashes: map[btKey]*btHashEntry{},
|
||||
maxEntries: maxEntries}
|
||||
bth.root.next = &bth.root
|
||||
bth.root.prev = &bth.root
|
||||
return bth
|
||||
|
@ -76,7 +76,7 @@ func (bth *BaseTileHash) Update(x, y int, hash []byte) bool {
|
|||
return false
|
||||
}
|
||||
var entry *btHashEntry
|
||||
if len(bth.hashes) >= btMaxEntries {
|
||||
if len(bth.hashes) >= bth.maxEntries {
|
||||
entry = bth.removeLast()
|
||||
} else {
|
||||
entry = new(btHashEntry)
|
||||
|
|
|
@ -7,7 +7,7 @@ package common
|
|||
import "testing"
|
||||
|
||||
func TestBaseTileHash(t *testing.T) {
|
||||
bth := NewBaseTileHash()
|
||||
bth := NewBaseTileHash(256)
|
||||
h1 := []byte{1}
|
||||
h2 := []byte{2}
|
||||
for i := 0; i < 600; i++ {
|
||||
|
|
Loading…
Reference in New Issue
Block a user