mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	* Dropped unused codekit config * Integrated dynamic and static bindata for public * Ignore public bindata * Add a general generate make task * Integrated flexible public assets into web command * Updated vendoring, added all missiong govendor deps * Made the linter happy with the bindata and dynamic code * Moved public bindata definition to modules directory * Ignoring the new bindata path now * Updated to the new public modules import path * Updated public bindata command and drop the new prefix
		
			
				
	
	
		
			108 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
 | 
						|
// All rights reserved.
 | 
						|
//
 | 
						|
// Use of this source code is governed by a BSD-style license that can be
 | 
						|
// found in the LICENSE file.
 | 
						|
 | 
						|
package leveldb
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/syndtr/goleveldb/leveldb/filter"
 | 
						|
	"github.com/syndtr/goleveldb/leveldb/opt"
 | 
						|
)
 | 
						|
 | 
						|
func dupOptions(o *opt.Options) *opt.Options {
 | 
						|
	newo := &opt.Options{}
 | 
						|
	if o != nil {
 | 
						|
		*newo = *o
 | 
						|
	}
 | 
						|
	if newo.Strict == 0 {
 | 
						|
		newo.Strict = opt.DefaultStrict
 | 
						|
	}
 | 
						|
	return newo
 | 
						|
}
 | 
						|
 | 
						|
func (s *session) setOptions(o *opt.Options) {
 | 
						|
	no := dupOptions(o)
 | 
						|
	// Alternative filters.
 | 
						|
	if filters := o.GetAltFilters(); len(filters) > 0 {
 | 
						|
		no.AltFilters = make([]filter.Filter, len(filters))
 | 
						|
		for i, filter := range filters {
 | 
						|
			no.AltFilters[i] = &iFilter{filter}
 | 
						|
		}
 | 
						|
	}
 | 
						|
	// Comparer.
 | 
						|
	s.icmp = &iComparer{o.GetComparer()}
 | 
						|
	no.Comparer = s.icmp
 | 
						|
	// Filter.
 | 
						|
	if filter := o.GetFilter(); filter != nil {
 | 
						|
		no.Filter = &iFilter{filter}
 | 
						|
	}
 | 
						|
 | 
						|
	s.o = &cachedOptions{Options: no}
 | 
						|
	s.o.cache()
 | 
						|
}
 | 
						|
 | 
						|
const optCachedLevel = 7
 | 
						|
 | 
						|
type cachedOptions struct {
 | 
						|
	*opt.Options
 | 
						|
 | 
						|
	compactionExpandLimit []int
 | 
						|
	compactionGPOverlaps  []int
 | 
						|
	compactionSourceLimit []int
 | 
						|
	compactionTableSize   []int
 | 
						|
	compactionTotalSize   []int64
 | 
						|
}
 | 
						|
 | 
						|
func (co *cachedOptions) cache() {
 | 
						|
	co.compactionExpandLimit = make([]int, optCachedLevel)
 | 
						|
	co.compactionGPOverlaps = make([]int, optCachedLevel)
 | 
						|
	co.compactionSourceLimit = make([]int, optCachedLevel)
 | 
						|
	co.compactionTableSize = make([]int, optCachedLevel)
 | 
						|
	co.compactionTotalSize = make([]int64, optCachedLevel)
 | 
						|
 | 
						|
	for level := 0; level < optCachedLevel; level++ {
 | 
						|
		co.compactionExpandLimit[level] = co.Options.GetCompactionExpandLimit(level)
 | 
						|
		co.compactionGPOverlaps[level] = co.Options.GetCompactionGPOverlaps(level)
 | 
						|
		co.compactionSourceLimit[level] = co.Options.GetCompactionSourceLimit(level)
 | 
						|
		co.compactionTableSize[level] = co.Options.GetCompactionTableSize(level)
 | 
						|
		co.compactionTotalSize[level] = co.Options.GetCompactionTotalSize(level)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (co *cachedOptions) GetCompactionExpandLimit(level int) int {
 | 
						|
	if level < optCachedLevel {
 | 
						|
		return co.compactionExpandLimit[level]
 | 
						|
	}
 | 
						|
	return co.Options.GetCompactionExpandLimit(level)
 | 
						|
}
 | 
						|
 | 
						|
func (co *cachedOptions) GetCompactionGPOverlaps(level int) int {
 | 
						|
	if level < optCachedLevel {
 | 
						|
		return co.compactionGPOverlaps[level]
 | 
						|
	}
 | 
						|
	return co.Options.GetCompactionGPOverlaps(level)
 | 
						|
}
 | 
						|
 | 
						|
func (co *cachedOptions) GetCompactionSourceLimit(level int) int {
 | 
						|
	if level < optCachedLevel {
 | 
						|
		return co.compactionSourceLimit[level]
 | 
						|
	}
 | 
						|
	return co.Options.GetCompactionSourceLimit(level)
 | 
						|
}
 | 
						|
 | 
						|
func (co *cachedOptions) GetCompactionTableSize(level int) int {
 | 
						|
	if level < optCachedLevel {
 | 
						|
		return co.compactionTableSize[level]
 | 
						|
	}
 | 
						|
	return co.Options.GetCompactionTableSize(level)
 | 
						|
}
 | 
						|
 | 
						|
func (co *cachedOptions) GetCompactionTotalSize(level int) int64 {
 | 
						|
	if level < optCachedLevel {
 | 
						|
		return co.compactionTotalSize[level]
 | 
						|
	}
 | 
						|
	return co.Options.GetCompactionTotalSize(level)
 | 
						|
}
 |