mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-25 06:42:16 +00:00
Add ColoredBytes() and update DebugDB
This commit is contained in:
parent
1b1c4cd94d
commit
21726a6853
@ -9,6 +9,7 @@ BREAKING:
|
|||||||
- [merkle] Use 20-bytes of SHA256 instead of RIPEMD160. NOTE: this package is
|
- [merkle] Use 20-bytes of SHA256 instead of RIPEMD160. NOTE: this package is
|
||||||
moving to github.com/tendermint/go-crypto !
|
moving to github.com/tendermint/go-crypto !
|
||||||
- [common] Remove gogoproto from KVPair types
|
- [common] Remove gogoproto from KVPair types
|
||||||
|
- [common] Error simplification, #220
|
||||||
|
|
||||||
FEATURES:
|
FEATURES:
|
||||||
|
|
||||||
@ -17,6 +18,8 @@ FEATURES:
|
|||||||
- [autofile] logjack command for piping stdin to a rotating file
|
- [autofile] logjack command for piping stdin to a rotating file
|
||||||
- [bech32] New package. NOTE: should move out of here - it's just two small
|
- [bech32] New package. NOTE: should move out of here - it's just two small
|
||||||
functions
|
functions
|
||||||
|
- [common] ColoredBytes([]byte) string for printing mixed ascii and bytes
|
||||||
|
- [db] DebugDB uses ColoredBytes()
|
||||||
|
|
||||||
## 0.8.4
|
## 0.8.4
|
||||||
|
|
||||||
|
@ -81,3 +81,15 @@ func Cyan(args ...interface{}) string {
|
|||||||
func White(args ...interface{}) string {
|
func White(args ...interface{}) string {
|
||||||
return treatAll(ANSIFgWhite, args...)
|
return treatAll(ANSIFgWhite, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ColoredBytes(data []byte, textColor, bytesColor func(...interface{}) string) string {
|
||||||
|
s := ""
|
||||||
|
for _, b := range data {
|
||||||
|
if 0x21 <= b && b < 0x7F {
|
||||||
|
s += textColor(string(b))
|
||||||
|
} else {
|
||||||
|
s += bytesColor(Fmt("%02X", b))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
@ -33,7 +33,9 @@ func (ddb debugDB) Mutex() *sync.Mutex { return nil }
|
|||||||
// Implements DB.
|
// Implements DB.
|
||||||
func (ddb debugDB) Get(key []byte) (value []byte) {
|
func (ddb debugDB) Get(key []byte) (value []byte) {
|
||||||
defer func() {
|
defer func() {
|
||||||
fmt.Printf("%v.Get(%v) %v\n", ddb.label, cmn.Cyan(_fmt("%X", key)), cmn.Blue(_fmt("%X", value)))
|
fmt.Printf("%v.Get(%v) %v\n", ddb.label,
|
||||||
|
cmn.ColoredBytes(key, cmn.Cyan, cmn.Blue),
|
||||||
|
cmn.ColoredBytes(value, cmn.Green, cmn.Blue))
|
||||||
}()
|
}()
|
||||||
value = ddb.db.Get(key)
|
value = ddb.db.Get(key)
|
||||||
return
|
return
|
||||||
@ -42,68 +44,85 @@ func (ddb debugDB) Get(key []byte) (value []byte) {
|
|||||||
// Implements DB.
|
// Implements DB.
|
||||||
func (ddb debugDB) Has(key []byte) (has bool) {
|
func (ddb debugDB) Has(key []byte) (has bool) {
|
||||||
defer func() {
|
defer func() {
|
||||||
fmt.Printf("%v.Has(%v) %v\n", ddb.label, cmn.Cyan(_fmt("%X", key)), has)
|
fmt.Printf("%v.Has(%v) %v\n", ddb.label,
|
||||||
|
cmn.ColoredBytes(key, cmn.Cyan, cmn.Blue), has)
|
||||||
}()
|
}()
|
||||||
return ddb.db.Has(key)
|
return ddb.db.Has(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements DB.
|
// Implements DB.
|
||||||
func (ddb debugDB) Set(key []byte, value []byte) {
|
func (ddb debugDB) Set(key []byte, value []byte) {
|
||||||
fmt.Printf("%v.Set(%v, %v)\n", ddb.label, cmn.Cyan(_fmt("%X", key)), cmn.Yellow(_fmt("%X", value)))
|
fmt.Printf("%v.Set(%v, %v)\n", ddb.label,
|
||||||
|
cmn.ColoredBytes(key, cmn.Yellow, cmn.Blue),
|
||||||
|
cmn.ColoredBytes(value, cmn.Green, cmn.Blue))
|
||||||
ddb.db.Set(key, value)
|
ddb.db.Set(key, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements DB.
|
// Implements DB.
|
||||||
func (ddb debugDB) SetSync(key []byte, value []byte) {
|
func (ddb debugDB) SetSync(key []byte, value []byte) {
|
||||||
fmt.Printf("%v.SetSync(%v, %v)\n", ddb.label, cmn.Cyan(_fmt("%X", key)), cmn.Yellow(_fmt("%X", value)))
|
fmt.Printf("%v.SetSync(%v, %v)\n", ddb.label,
|
||||||
|
cmn.ColoredBytes(key, cmn.Yellow, cmn.Blue),
|
||||||
|
cmn.ColoredBytes(value, cmn.Green, cmn.Blue))
|
||||||
ddb.db.SetSync(key, value)
|
ddb.db.SetSync(key, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements atomicSetDeleter.
|
// Implements atomicSetDeleter.
|
||||||
func (ddb debugDB) SetNoLock(key []byte, value []byte) {
|
func (ddb debugDB) SetNoLock(key []byte, value []byte) {
|
||||||
fmt.Printf("%v.SetNoLock(%v, %v)\n", ddb.label, cmn.Cyan(_fmt("%X", key)), cmn.Yellow(_fmt("%X", value)))
|
fmt.Printf("%v.SetNoLock(%v, %v)\n", ddb.label,
|
||||||
|
cmn.ColoredBytes(key, cmn.Yellow, cmn.Blue),
|
||||||
|
cmn.ColoredBytes(value, cmn.Green, cmn.Blue))
|
||||||
ddb.db.(atomicSetDeleter).SetNoLock(key, value)
|
ddb.db.(atomicSetDeleter).SetNoLock(key, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements atomicSetDeleter.
|
// Implements atomicSetDeleter.
|
||||||
func (ddb debugDB) SetNoLockSync(key []byte, value []byte) {
|
func (ddb debugDB) SetNoLockSync(key []byte, value []byte) {
|
||||||
fmt.Printf("%v.SetNoLockSync(%v, %v)\n", ddb.label, cmn.Cyan(_fmt("%X", key)), cmn.Yellow(_fmt("%X", value)))
|
fmt.Printf("%v.SetNoLockSync(%v, %v)\n", ddb.label,
|
||||||
|
cmn.ColoredBytes(key, cmn.Yellow, cmn.Blue),
|
||||||
|
cmn.ColoredBytes(value, cmn.Green, cmn.Blue))
|
||||||
ddb.db.(atomicSetDeleter).SetNoLockSync(key, value)
|
ddb.db.(atomicSetDeleter).SetNoLockSync(key, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements DB.
|
// Implements DB.
|
||||||
func (ddb debugDB) Delete(key []byte) {
|
func (ddb debugDB) Delete(key []byte) {
|
||||||
fmt.Printf("%v.Delete(%v)\n", ddb.label, cmn.Red(_fmt("%X", key)))
|
fmt.Printf("%v.Delete(%v)\n", ddb.label,
|
||||||
|
cmn.ColoredBytes(key, cmn.Red, cmn.Yellow))
|
||||||
ddb.db.Delete(key)
|
ddb.db.Delete(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements DB.
|
// Implements DB.
|
||||||
func (ddb debugDB) DeleteSync(key []byte) {
|
func (ddb debugDB) DeleteSync(key []byte) {
|
||||||
fmt.Printf("%v.DeleteSync(%v)\n", ddb.label, cmn.Red(_fmt("%X", key)))
|
fmt.Printf("%v.DeleteSync(%v)\n", ddb.label,
|
||||||
|
cmn.ColoredBytes(key, cmn.Red, cmn.Yellow))
|
||||||
ddb.db.DeleteSync(key)
|
ddb.db.DeleteSync(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements atomicSetDeleter.
|
// Implements atomicSetDeleter.
|
||||||
func (ddb debugDB) DeleteNoLock(key []byte) {
|
func (ddb debugDB) DeleteNoLock(key []byte) {
|
||||||
fmt.Printf("%v.DeleteNoLock(%v)\n", ddb.label, cmn.Red(_fmt("%X", key)))
|
fmt.Printf("%v.DeleteNoLock(%v)\n", ddb.label,
|
||||||
|
cmn.ColoredBytes(key, cmn.Red, cmn.Yellow))
|
||||||
ddb.db.(atomicSetDeleter).DeleteNoLock(key)
|
ddb.db.(atomicSetDeleter).DeleteNoLock(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements atomicSetDeleter.
|
// Implements atomicSetDeleter.
|
||||||
func (ddb debugDB) DeleteNoLockSync(key []byte) {
|
func (ddb debugDB) DeleteNoLockSync(key []byte) {
|
||||||
fmt.Printf("%v.DeleteNoLockSync(%v)\n", ddb.label, cmn.Red(_fmt("%X", key)))
|
fmt.Printf("%v.DeleteNoLockSync(%v)\n", ddb.label,
|
||||||
|
cmn.ColoredBytes(key, cmn.Red, cmn.Yellow))
|
||||||
ddb.db.(atomicSetDeleter).DeleteNoLockSync(key)
|
ddb.db.(atomicSetDeleter).DeleteNoLockSync(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements DB.
|
// Implements DB.
|
||||||
func (ddb debugDB) Iterator(start, end []byte) Iterator {
|
func (ddb debugDB) Iterator(start, end []byte) Iterator {
|
||||||
fmt.Printf("%v.Iterator(%v, %v)\n", ddb.label, cmn.Cyan(_fmt("%X", start)), cmn.Blue(_fmt("%X", end)))
|
fmt.Printf("%v.Iterator(%v, %v)\n", ddb.label,
|
||||||
|
cmn.ColoredBytes(start, cmn.Cyan, cmn.Blue),
|
||||||
|
cmn.ColoredBytes(end, cmn.Cyan, cmn.Blue))
|
||||||
return NewDebugIterator(ddb.label, ddb.db.Iterator(start, end))
|
return NewDebugIterator(ddb.label, ddb.db.Iterator(start, end))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements DB.
|
// Implements DB.
|
||||||
func (ddb debugDB) ReverseIterator(start, end []byte) Iterator {
|
func (ddb debugDB) ReverseIterator(start, end []byte) Iterator {
|
||||||
fmt.Printf("%v.ReverseIterator(%v, %v)\n", ddb.label, cmn.Cyan(_fmt("%X", start)), cmn.Blue(_fmt("%X", end)))
|
fmt.Printf("%v.ReverseIterator(%v, %v)\n", ddb.label,
|
||||||
|
cmn.ColoredBytes(start, cmn.Cyan, cmn.Blue),
|
||||||
|
cmn.ColoredBytes(end, cmn.Cyan, cmn.Blue))
|
||||||
return NewDebugIterator(ddb.label, ddb.db.ReverseIterator(start, end))
|
return NewDebugIterator(ddb.label, ddb.db.ReverseIterator(start, end))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -173,15 +192,17 @@ func (ditr debugIterator) Next() {
|
|||||||
|
|
||||||
// Implements Iterator.
|
// Implements Iterator.
|
||||||
func (ditr debugIterator) Key() (key []byte) {
|
func (ditr debugIterator) Key() (key []byte) {
|
||||||
fmt.Printf("%v.itr.Key() %v\n", ditr.label, cmn.Cyan(_fmt("%X", key)))
|
|
||||||
key = ditr.itr.Key()
|
key = ditr.itr.Key()
|
||||||
|
fmt.Printf("%v.itr.Key() %v\n", ditr.label,
|
||||||
|
cmn.ColoredBytes(key, cmn.Cyan, cmn.Blue))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements Iterator.
|
// Implements Iterator.
|
||||||
func (ditr debugIterator) Value() (value []byte) {
|
func (ditr debugIterator) Value() (value []byte) {
|
||||||
fmt.Printf("%v.itr.Value() %v\n", ditr.label, cmn.Blue(_fmt("%X", value)))
|
|
||||||
value = ditr.itr.Value()
|
value = ditr.itr.Value()
|
||||||
|
fmt.Printf("%v.itr.Value() %v\n", ditr.label,
|
||||||
|
cmn.ColoredBytes(value, cmn.Green, cmn.Blue))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -209,13 +230,16 @@ func NewDebugBatch(label string, bch Batch) debugBatch {
|
|||||||
|
|
||||||
// Implements Batch.
|
// Implements Batch.
|
||||||
func (dbch debugBatch) Set(key, value []byte) {
|
func (dbch debugBatch) Set(key, value []byte) {
|
||||||
fmt.Printf("%v.batch.Set(%v, %v)\n", dbch.label, cmn.Cyan(_fmt("%X", key)), cmn.Yellow(_fmt("%X", value)))
|
fmt.Printf("%v.batch.Set(%v, %v)\n", dbch.label,
|
||||||
|
cmn.ColoredBytes(key, cmn.Yellow, cmn.Blue),
|
||||||
|
cmn.ColoredBytes(value, cmn.Green, cmn.Blue))
|
||||||
dbch.bch.Set(key, value)
|
dbch.bch.Set(key, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements Batch.
|
// Implements Batch.
|
||||||
func (dbch debugBatch) Delete(key []byte) {
|
func (dbch debugBatch) Delete(key []byte) {
|
||||||
fmt.Printf("%v.batch.Delete(%v)\n", dbch.label, cmn.Red(_fmt("%X", key)))
|
fmt.Printf("%v.batch.Delete(%v)\n", dbch.label,
|
||||||
|
cmn.ColoredBytes(key, cmn.Red, cmn.Yellow))
|
||||||
dbch.bch.Delete(key)
|
dbch.bch.Delete(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user