func()

in tools/go-agent/instrument/entry/instrument.go [54:94]


func (i *Instrument) WriteExtraFiles(dir string) ([]string, error) {
	file, err := tools.WriteFile(dir, "skywalking_init.go", tools.ExecuteTemplate(`package main

import (
	_ "unsafe"
)

//go:linkname {{.GetGlobalOperatorLinkMethod}} {{.GetGlobalOperatorLinkMethod}}
var {{.GetGlobalOperatorLinkMethod}} func() interface{}

type skywalkingTracerInitiator interface {
	InitTracer(map[string]interface{})
}

func init() {
	if {{.GetGlobalOperatorLinkMethod}} != nil {
		op := {{.GetGlobalOperatorLinkMethod}}()
		if op == nil {
			return
		}
		tracer, ok := op.(skywalkingTracerInitiator)
		if !ok {
			return
		}
		tracer.InitTracer(nil)
	}
}
`, struct {
		GetGlobalOperatorLinkMethod string
		Config                      *config.Config
	}{
		GetGlobalOperatorLinkMethod: consts.GlobalTracerGetMethodName,
		Config:                      config.GetConfig(),
	}))
	if err != nil {
		return nil, err
	}
	result := make([]string, 0)
	result = append(result, file)
	return result, nil
}