Initial commit
This commit is contained in:
46
vendor/github.com/cockroachdb/pebble/internal/manifest/level.go
generated
vendored
Normal file
46
vendor/github.com/cockroachdb/pebble/internal/manifest/level.go
generated
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
// Copyright 2020 The LevelDB-Go and Pebble Authors. All rights reserved. Use
|
||||
// of this source code is governed by a BSD-style license that can be found in
|
||||
// the LICENSE file.
|
||||
|
||||
package manifest
|
||||
|
||||
import "fmt"
|
||||
|
||||
const (
|
||||
// 3 bits are necessary to represent level values from 0-6.
|
||||
levelBits = 3
|
||||
levelMask = (1 << levelBits) - 1
|
||||
// invalidSublevel denotes an invalid or non-applicable sublevel.
|
||||
invalidSublevel = -1
|
||||
)
|
||||
|
||||
// Level encodes a level and optional sublevel for use in log and error
|
||||
// messages. The encoding has the property that Level(0) ==
|
||||
// L0Sublevel(invalidSublevel).
|
||||
type Level uint32
|
||||
|
||||
func makeLevel(level, sublevel int) Level {
|
||||
return Level(((sublevel + 1) << levelBits) | level)
|
||||
}
|
||||
|
||||
// LevelToInt returns the int representation of a Level
|
||||
func LevelToInt(l Level) int {
|
||||
return int(l) & levelMask
|
||||
}
|
||||
|
||||
// L0Sublevel returns a Level representing the specified L0 sublevel.
|
||||
func L0Sublevel(sublevel int) Level {
|
||||
if sublevel < 0 {
|
||||
panic(fmt.Sprintf("invalid L0 sublevel: %d", sublevel))
|
||||
}
|
||||
return makeLevel(0, sublevel)
|
||||
}
|
||||
|
||||
func (l Level) String() string {
|
||||
level := int(l) & levelMask
|
||||
sublevel := (int(l) >> levelBits) - 1
|
||||
if sublevel != invalidSublevel {
|
||||
return fmt.Sprintf("L%d.%d", level, sublevel)
|
||||
}
|
||||
return fmt.Sprintf("L%d", level)
|
||||
}
|
||||
Reference in New Issue
Block a user