Populate BlockMap

This commit is contained in:
Audrius Butkevicius 2014-10-07 22:15:01 +01:00 committed by Jakob Borg
parent 435f9113e8
commit 0bc50f7284

View File

@ -42,6 +42,7 @@ type Set struct {
mutex sync.Mutex
folder string
db *leveldb.DB
blockmap *BlockMap
}
func NewSet(folder string, db *leveldb.DB) *Set {
@ -49,6 +50,7 @@ func NewSet(folder string, db *leveldb.DB) *Set {
localVersion: make(map[protocol.DeviceID]uint64),
folder: folder,
db: db,
blockmap: NewBlockMap(db, folder),
}
var deviceID protocol.DeviceID
@ -80,6 +82,10 @@ func (s *Set) Replace(device protocol.DeviceID, fs []protocol.FileInfo) {
// Reset the local version if all files were removed.
s.localVersion[device] = 0
}
if device == protocol.LocalDeviceID {
s.blockmap.Drop()
s.blockmap.Add(fs)
}
}
func (s *Set) ReplaceWithDelete(device protocol.DeviceID, fs []protocol.FileInfo) {
@ -92,6 +98,10 @@ func (s *Set) ReplaceWithDelete(device protocol.DeviceID, fs []protocol.FileInfo
if lv := ldbReplaceWithDelete(s.db, []byte(s.folder), device[:], fs); lv > s.localVersion[device] {
s.localVersion[device] = lv
}
if device == protocol.LocalDeviceID {
s.blockmap.Drop()
s.blockmap.Add(fs)
}
}
func (s *Set) Update(device protocol.DeviceID, fs []protocol.FileInfo) {
@ -104,6 +114,9 @@ func (s *Set) Update(device protocol.DeviceID, fs []protocol.FileInfo) {
if lv := ldbUpdate(s.db, []byte(s.folder), device[:], fs); lv > s.localVersion[device] {
s.localVersion[device] = lv
}
if device == protocol.LocalDeviceID {
s.blockmap.Update(fs)
}
}
func (s *Set) WithNeed(device protocol.DeviceID, fn fileIterator) {
@ -179,6 +192,11 @@ func ListFolders(db *leveldb.DB) []string {
// database.
func DropFolder(db *leveldb.DB, folder string) {
ldbDropFolder(db, []byte(folder))
bm := &BlockMap{
db: db,
folder: folder,
}
bm.Drop()
}
func normalizeFilenames(fs []protocol.FileInfo) {