diff --git a/store/cachekvstore.go b/store/cachekvstore.go index 02c198ee5..d2f0c10b2 100644 --- a/store/cachekvstore.go +++ b/store/cachekvstore.go @@ -4,6 +4,8 @@ import ( "bytes" "sort" "sync" + + cmn "github.com/tendermint/tmlibs/common" ) // If value is nil but deleted is false, it means the parent doesn't have the @@ -85,8 +87,8 @@ func (ci *cacheKVStore) Write() { } sort.Strings(keys) - // TODO in tmlibs/db we use Batch to write atomically. - // Consider allowing usage of Batch. + // TODO: Consider allowing usage of Batch, which would allow the write to + // at least happen atomically. for _, key := range keys { cacheValue := ci.cache[key] if cacheValue.deleted { @@ -133,14 +135,14 @@ func (ci *cacheKVStore) iterator(start, end []byte, ascending bool) Iterator { } // Constructs a slice of dirty items, to use w/ memIterator. -func (ci *cacheKVStore) dirtyItems(ascending bool) []KVPair { - items := make([]KVPair, 0, len(ci.cache)) +func (ci *cacheKVStore) dirtyItems(ascending bool) []cmn.KVPair { + items := make([]cmn.KVPair, 0, len(ci.cache)) for key, cacheValue := range ci.cache { if !cacheValue.dirty { continue } items = append(items, - KVPair{[]byte(key), cacheValue.value}) + cmn.KVPair{[]byte(key), cacheValue.value}) } sort.Slice(items, func(i, j int) bool { if ascending { diff --git a/store/firstlast.go b/store/firstlast.go index 661a08c26..e0c8b11bb 100644 --- a/store/firstlast.go +++ b/store/firstlast.go @@ -1,24 +1,27 @@ package store -import "bytes" +import ( + "bytes" + cmn "github.com/tendermint/tmlibs/common" +) // Gets the first item. -func First(st KVStore, start, end []byte) (kv KVPair, ok bool) { +func First(st KVStore, start, end []byte) (kv cmn.KVPair, ok bool) { iter := st.Iterator(start, end) if !iter.Valid() { return kv, false } defer iter.Close() - return KVPair{iter.Key(), iter.Value()}, true + return cmn.KVPair{iter.Key(), iter.Value()}, true } // Gets the last item. `end` is exclusive. -func Last(st KVStore, start, end []byte) (kv KVPair, ok bool) { +func Last(st KVStore, start, end []byte) (kv cmn.KVPair, ok bool) { iter := st.ReverseIterator(end, start) if !iter.Valid() { if v := st.Get(start); v != nil { - return KVPair{cp(start), cp(v)}, true + return cmn.KVPair{cp(start), cp(v)}, true } else { return kv, false } @@ -33,5 +36,5 @@ func Last(st KVStore, start, end []byte) (kv KVPair, ok bool) { } } - return KVPair{iter.Key(), iter.Value()}, true + return cmn.KVPair{iter.Key(), iter.Value()}, true } diff --git a/store/iavlstore.go b/store/iavlstore.go index f7dc3d6f5..0c333ab92 100644 --- a/store/iavlstore.go +++ b/store/iavlstore.go @@ -4,6 +4,7 @@ import ( "sync" "github.com/tendermint/iavl" + cmn "github.com/tendermint/tmlibs/common" dbm "github.com/tendermint/tmlibs/db" ) @@ -131,7 +132,7 @@ type iavlIterator struct { ascending bool // Channel to push iteration values. - iterCh chan KVPair + iterCh chan cmn.KVPair // Close this to release goroutine. quitCh chan struct{} @@ -159,7 +160,7 @@ func newIAVLIterator(tree *iavl.Tree, start, end []byte, ascending bool) *iavlIt start: cp(start), end: cp(end), ascending: ascending, - iterCh: make(chan KVPair, 0), // Set capacity > 0? + iterCh: make(chan cmn.KVPair, 0), // Set capacity > 0? quitCh: make(chan struct{}), initCh: make(chan struct{}), } @@ -176,7 +177,7 @@ func (iter *iavlIterator) iterateRoutine() { select { case <-iter.quitCh: return true // done with iteration. - case iter.iterCh <- KVPair{key, value}: + case iter.iterCh <- cmn.KVPair{key, value}: return false // yay. } }, diff --git a/store/memiterator.go b/store/memiterator.go index 8c1283958..dde888fb1 100644 --- a/store/memiterator.go +++ b/store/memiterator.go @@ -1,6 +1,7 @@ package store import ( + cmn "github.com/tendermint/tmlibs/common" dbm "github.com/tendermint/tmlibs/db" ) @@ -9,10 +10,10 @@ import ( // Implements Iterator. type memIterator struct { start, end []byte - items []KVPair + items []cmn.KVPair } -func newMemIterator(start, end []byte, items []KVPair) *memIterator { +func newMemIterator(start, end []byte, items []cmn.KVPair) *memIterator { itemsInDomain := make([]KVPair, 0) for _, item := range items { ascending := keyCompare(start, end) < 0 diff --git a/store/types.go b/store/types.go index 556320f55..0138aa9b2 100644 --- a/store/types.go +++ b/store/types.go @@ -2,8 +2,8 @@ package store import ( "bytes" + "fmt" - "github.com/tendermint/go-wire/data" "github.com/tendermint/tmlibs/db" ) @@ -138,11 +138,6 @@ type CacheWrap interface { //---------------------------------------- // etc -type KVPair struct { - Key data.Bytes - Value data.Bytes -} - // CommitID contains the tree version number and its merkle root. type CommitID struct { Version int64 @@ -154,7 +149,7 @@ func (cid CommitID) IsZero() bool { } func (cid CommitID) String() string { - return fmt.Spritnf("CommitID{%v:%X}", cid.Hash, cid.Version) + return fmt.Sprintf("CommitID{%v:%X}", cid.Hash, cid.Version) } // bytes.Compare but bounded on both sides by nil.