nightingale/pkg/istr/format.go

153 lines
3.1 KiB
Go

package istr
import (
"bytes"
"sync"
)
const SEPERATOR = "/"
var bufferPool = sync.Pool{New: func() interface{} { return new(bytes.Buffer) }}
//strs目前有三种类别
// endpoint/metric/tags
// endpoint/counter
// metric/tags
// strs 参数必须按照上面的顺序来入参
// func PK(strs ...string) string {
// ret := bufferPool.Get().(*bytes.Buffer)
// ret.Reset()
// defer bufferPool.Put(ret)
// count := len(strs)
// if count == 0 {
// return ""
// }
// ret.WriteString(strs[0])
// for i := 1; i < count-1; i++ {
// ret.WriteString(SEPERATOR)
// ret.WriteString(strs[i])
// }
// if strs[count-1] != "" {
// ret.WriteString(SEPERATOR)
// ret.WriteString(strs[count-1])
// }
// return ret.String()
// }
// func UUID(endpoint, metric, tags, dstype string, step int) string {
// ret := bufferPool.Get().(*bytes.Buffer)
// ret.Reset()
// defer bufferPool.Put(ret)
// if tags == "" {
// ret.WriteString(endpoint)
// ret.WriteString(SEPERATOR)
// ret.WriteString(metric)
// ret.WriteString(SEPERATOR)
// ret.WriteString(dstype)
// ret.WriteString(SEPERATOR)
// ret.WriteString(strconv.Itoa(step))
// return ret.String()
// }
// ret.WriteString(endpoint)
// ret.WriteString(SEPERATOR)
// ret.WriteString(metric)
// ret.WriteString(SEPERATOR)
// ret.WriteString(tags)
// ret.WriteString(SEPERATOR)
// ret.WriteString(dstype)
// ret.WriteString(SEPERATOR)
// ret.WriteString(strconv.Itoa(step))
// return ret.String()
// }
// func XXhash(strs ...string) uint64 {
// ret := bufferPool.Get().(*bytes.Buffer)
// ret.Reset()
// defer bufferPool.Put(ret)
// count := len(strs)
// if count == 0 {
// return 0
// }
// ret.WriteString(strs[0])
// for i := 1; i < count-1; i++ {
// ret.WriteString(SEPERATOR)
// ret.WriteString(strs[i])
// }
// if strs[count-1] != "" {
// ret.WriteString(SEPERATOR)
// ret.WriteString(strs[count-1])
// }
// return xxhash.Sum64(ret.Bytes())
// }
// func ToMD5(endpoint string, metric string, tags string) string {
// return str.MD5(PK(endpoint, metric, tags))
// }
// func SortedTags(tags map[string]string) string {
// if tags == nil {
// return ""
// }
// size := len(tags)
// if size == 0 {
// return ""
// }
// ret := bufferPool.Get().(*bytes.Buffer)
// ret.Reset()
// defer bufferPool.Put(ret)
// if size == 1 {
// for k, v := range tags {
// ret.WriteString(k)
// ret.WriteString("=")
// ret.WriteString(v)
// }
// return ret.String()
// }
// keys := make([]string, size)
// i := 0
// for k := range tags {
// keys[i] = k
// i++
// }
// sort.Strings(keys)
// for j, key := range keys {
// ret.WriteString(key)
// ret.WriteString("=")
// ret.WriteString(tags[key])
// if j != size-1 {
// ret.WriteString(",")
// }
// }
// return ret.String()
// }
// func UnixTsFormat(ts int64) string {
// return time.Unix(ts, 0).Format("2006-01-02 15:04:05")
// }
// func IdsString(ids []int) string {
// count := len(ids)
// arr := make([]string, count)
// for i := 0; i < count; i++ {
// arr[i] = fmt.Sprintf("%d", ids[i])
// }
// return strings.Join(arr, ",")
// }