本文整理汇总了Golang中github.com/dgryski/carbonzipper/carbonzipperpb.GlobResponse.GetMatches方法的典型用法代码示例。如果您正苦于以下问题:Golang GlobResponse.GetMatches方法的具体用法?Golang GlobResponse.GetMatches怎么用?Golang GlobResponse.GetMatches使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/dgryski/carbonzipper/carbonzipperpb.GlobResponse
的用法示例。
在下文中一共展示了GlobResponse.GetMatches方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: findCompleter
func findCompleter(globs pb.GlobResponse) ([]byte, error) {
var b bytes.Buffer
var complete = make([]completer, 0)
for _, g := range globs.GetMatches() {
c := completer{
Path: g.GetPath(),
}
if g.GetIsLeaf() {
c.IsLeaf = "1"
} else {
c.IsLeaf = "0"
}
i := strings.LastIndex(c.Path, ".")
if i != -1 {
c.Name = c.Path[i+1:]
}
complete = append(complete, c)
}
err := json.NewEncoder(&b).Encode(struct {
Metrics []completer `json:"metrics"`
}{
Metrics: complete},
)
return b.Bytes(), err
}
示例2: findList
func findList(globs pb.GlobResponse) ([]byte, error) {
var b bytes.Buffer
for _, g := range globs.GetMatches() {
var dot string
// make sure non-leaves end in one dot
if !g.GetIsLeaf() && !strings.HasSuffix(g.GetPath(), ".") {
dot = "."
}
fmt.Fprintln(&b, g.GetPath()+dot)
}
return b.Bytes(), nil
}
示例3: findTreejson
func findTreejson(globs pb.GlobResponse) ([]byte, error) {
var b bytes.Buffer
var tree = make([]treejson, 0)
seen := make(map[string]struct{})
basepath := globs.GetName()
if i := strings.LastIndex(basepath, "."); i != -1 {
basepath = basepath[:i+1]
}
for _, g := range globs.GetMatches() {
name := g.GetPath()
if i := strings.LastIndex(name, "."); i != -1 {
name = name[i+1:]
}
if _, ok := seen[name]; ok {
continue
}
seen[name] = struct{}{}
t := treejson{
ID: basepath + name,
Context: treejsonContext,
Text: name,
}
if g.GetIsLeaf() {
t.Leaf = 1
} else {
t.AllowChildren = 1
t.Expandable = 1
}
tree = append(tree, t)
}
err := json.NewEncoder(&b).Encode(tree)
return b.Bytes(), err
}
示例4: renderHandler
//.........这里部分代码省略.........
mfetch := m
mfetch.from += from32
mfetch.until += until32
if _, ok := metricMap[mfetch]; ok {
// already fetched this metric for this request
continue
}
var glob pb.GlobResponse
var haveCacheData bool
if response, ok := findCache.get(m.metric); useCache && ok {
Metrics.FindCacheHits.Add(1)
err := proto.Unmarshal(response, &glob)
haveCacheData = err == nil
}
if !haveCacheData {
var err error
Metrics.FindRequests.Add(1)
stats.zipperRequests++
glob, err = Zipper.Find(m.metric)
if err != nil {
log.Printf("Find: %v: %v", m.metric, err)
continue
}
b, err := proto.Marshal(&glob)
if err == nil {
findCache.set(m.metric, b, 5*60)
}
}
// For each metric returned in the Find response, query Render
// This is a conscious decision to *not* cache render data
rch := make(chan *metricData, len(glob.GetMatches()))
leaves := 0
for _, m := range glob.GetMatches() {
if !m.GetIsLeaf() {
continue
}
Metrics.RenderRequests.Add(1)
leaves++
Limiter.enter()
stats.zipperRequests++
go func(m *pb.GlobMatch, from, until int32) {
var rptr *metricData
r, err := Zipper.Render(m.GetPath(), from, until)
if err == nil {
rptr = &r
} else {
log.Printf("Render: %v: %v", m.GetPath(), err)
}
rch <- rptr
Limiter.leave()
}(m, mfetch.from, mfetch.until)
}
for i := 0; i < leaves; i++ {
r := <-rch
if r != nil {
metricMap[mfetch] = append(metricMap[mfetch], r)
}
}
}
func() {
defer func() {
if r := recover(); r != nil {
var buf [1024]byte
runtime.Stack(buf[:], false)
log.Printf("panic during eval: %s: %s\n%s\n", cacheKey, r, string(buf[:]))
}
}()
exprs := evalExpr(exp, from32, until32, metricMap)
results = append(results, exprs...)
}()
}
var body []byte
switch format {
case "json":
body = marshalJSON(results)
case "protobuf":
body = marshalProtobuf(results)
case "raw":
body = marshalRaw(results)
case "pickle":
body = marshalPickle(results)
case "png":
body = marshalPNG(r, results)
}
writeResponse(w, body, format, jsonp)
if len(results) != 0 {
queryCache.set(cacheKey, body, cacheTimeout)
}
}