dotcloud/docker

View on GitHub
libnetwork/internal/caller/caller.go

Summary

Maintainability
A
0 mins
Test Coverage
package caller

import (
    "runtime"
    "strings"
)

func callerInfo(i int) string {
    ptr, _, _, ok := runtime.Caller(i)
    fName := "unknown"
    if ok {
        f := runtime.FuncForPC(ptr)
        if f != nil {
            // f.Name() is like: github.com/docker/libnetwork/caller.MethodName
            tmp := strings.Split(f.Name(), ".")
            if len(tmp) > 0 {
                fName = tmp[len(tmp)-1]
            }
        }
    }

    return fName
}

// Name returns the name of the function at the specified level.
// (level == 0 means current method name).
func Name(level int) string {
    return callerInfo(2 + level)
}