diff --git a/example/test_plugin/plugin/plugin.go b/example/test_plugin/plugin/plugin.go index b0cc5f4a..a8d9e6db 100644 --- a/example/test_plugin/plugin/plugin.go +++ b/example/test_plugin/plugin/plugin.go @@ -7,21 +7,25 @@ import ( var version = "v1" +// Sample stores middleware metadata type Sample struct{ Name string } +// Handler processes requests func (s *Sample) Handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Welcome to my website", s.Name, version) } +// Handler2 processes requests func Handler2(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Welcome to my website", version) } +// NewSample returns a new sample handler function func NewSample(name string) func(http.ResponseWriter, *http.Request) { - fmt.Println("in NewSample", name, version) s := &Sample{"test"} - return s.Handler - //return Handler2 + fmt.Println("in NewSample", name, version, s) + //return s.Handler + return Handler2 //return func(w http.ResponseWriter, r *http.Request) { return Handler2(w, r) } //return func(w http.ResponseWriter, r *http.Request) { return s.Handler(w, r) } } diff --git a/example/test_plugin/server.go b/example/test_plugin/server.go index 81fc5a52..0586cdfd 100644 --- a/example/test_plugin/server.go +++ b/example/test_plugin/server.go @@ -10,9 +10,8 @@ import ( // Plugin struct stores metadata for external modules type Plugin struct { - Pkgname, Typename string - Id int - handler func(http.ResponseWriter, *http.Request) + name string + handler func(http.ResponseWriter, *http.Request) } // Handler redirect http.Handler processing in the interpreter @@ -33,7 +32,7 @@ func main() { handler, err := i.Eval(`plugin.NewSample("test")`) log.Println("handler:", handler, "err:", err) - p := &Plugin{"sample", "Middleware", 0, nil} + p := &Plugin{"sample", nil} p.handler = handler.Interface().(func(http.ResponseWriter, *http.Request)) http.HandleFunc("/", p.Handler) http.ListenAndServe(":8080", nil) diff --git a/example/test_plugin/test_plugin b/example/test_plugin/test_plugin index 5e8d4ab4..0bfee455 100755 Binary files a/example/test_plugin/test_plugin and b/example/test_plugin/test_plugin differ diff --git a/interp/export_test.go b/interp/export_test.go deleted file mode 100644 index 91300772..00000000 --- a/interp/export_test.go +++ /dev/null @@ -1,16 +0,0 @@ -package interp - -func Example_export() { - src := `package tst - -func Exported() { println("Hello from Exported") } -` - - i := NewInterpreter(Opt{}, "export_test") - i.Eval(src) - f := i.Export("tst", "Exported").Interface().(func()) - f() - - // Output: - // Hello from Exported -} diff --git a/interp/interp.go b/interp/interp.go index 382adf25..f48abeea 100644 --- a/interp/interp.go +++ b/interp/interp.go @@ -1,7 +1,6 @@ package interp import ( - "log" "reflect" ) @@ -202,23 +201,6 @@ func (i *Interpreter) Eval(src string) (reflect.Value, error) { return res, err } -// Export returns a value defined in the interpreter during execution -// for use in the runtime -func (i *Interpreter) Export(pkg, name string) reflect.Value { - sym := i.scope[pkg].sym[name] - var res reflect.Value - if sym == nil { - return res - } - switch sym.kind { - case Func: - log.Println("Export func", pkg+"."+name, sym.node.index) - wrapper := genNodeWrapper(sym.node) - res = wrapper(i.Frame) - } - return res -} - // Import loads binary runtime symbols in the interpreter context so // they can be used in interpreted code func (i *Interpreter) Import(values LibValueMap, types LibTypeMap) { diff --git a/vendor/github.com/containous/provider2/provider.go b/vendor/github.com/containous/provider2/provider.go index fdd37838..c0cebdf4 100644 --- a/vendor/github.com/containous/provider2/provider.go +++ b/vendor/github.com/containous/provider2/provider.go @@ -2,6 +2,7 @@ package provider2 import "fmt" +// Sample is a dummy test function func Sample() { fmt.Println("Hello from Provider2") }