64 lines
1.2 KiB
Go
64 lines
1.2 KiB
Go
package types
|
|
|
|
import (
|
|
cmn "github.com/tendermint/tendermint/libs/common"
|
|
)
|
|
|
|
// Type synonym for convenience
|
|
type Tag = cmn.KVPair
|
|
|
|
// Type synonym for convenience
|
|
type Tags cmn.KVPairs
|
|
|
|
// New empty tags
|
|
func EmptyTags() Tags {
|
|
return make(Tags, 0)
|
|
}
|
|
|
|
// Append a single tag
|
|
func (t Tags) AppendTag(k string, v []byte) Tags {
|
|
return append(t, MakeTag(k, v))
|
|
}
|
|
|
|
// Append two lists of tags
|
|
func (t Tags) AppendTags(tags Tags) Tags {
|
|
return append(t, tags...)
|
|
}
|
|
|
|
// Turn tags into KVPair list
|
|
func (t Tags) ToKVPairs() []cmn.KVPair {
|
|
return []cmn.KVPair(t)
|
|
}
|
|
|
|
// New variadic tags, must be k string, v []byte repeating
|
|
func NewTags(tags ...interface{}) Tags {
|
|
var ret Tags
|
|
if len(tags)%2 != 0 {
|
|
panic("must specify key-value pairs as varargs")
|
|
}
|
|
i := 0
|
|
for {
|
|
if i == len(tags) {
|
|
break
|
|
}
|
|
ret = append(ret, Tag{Key: []byte(tags[i].(string)), Value: tags[i+1].([]byte)})
|
|
i += 2
|
|
}
|
|
return ret
|
|
}
|
|
|
|
// Make a tag from a key and a value
|
|
func MakeTag(k string, v []byte) Tag {
|
|
return Tag{Key: []byte(k), Value: v}
|
|
}
|
|
|
|
//__________________________________________________
|
|
|
|
// common tags
|
|
var (
|
|
TagAction = "action"
|
|
TagSrcValidator = "source-validator"
|
|
TagDstValidator = "destination-validator"
|
|
TagDelegator = "delegator"
|
|
)
|