42 lines
927 B
Go
42 lines
927 B
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io"
|
|
"os"
|
|
"path"
|
|
|
|
"github.com/yaoapp/kun/grpc"
|
|
"github.com/yaoapp/kun/maps"
|
|
)
|
|
|
|
// user Here is a real implementation of plugin that writes to a local file with
|
|
// the key name and the contents are the value of the key.
|
|
type user struct{ grpc.Plugin }
|
|
|
|
// Exec 读取
|
|
func (user *user) Exec(name string, args ...interface{}) (*grpc.Response, error) {
|
|
user.Logger.Debug("message from user.Exec")
|
|
v := maps.MakeMap()
|
|
v.Set("name", name)
|
|
v.Set("args", args)
|
|
bytes, err := json.Marshal(v)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &grpc.Response{Bytes: bytes, Type: "map"}, nil
|
|
}
|
|
|
|
func main() {
|
|
var output io.Writer = os.Stderr
|
|
var logroot = os.Getenv("GOU_TEST_PLG_LOG")
|
|
if logroot != "" {
|
|
logfile, err := os.Create(path.Join(logroot, "user.log"))
|
|
if err == nil {
|
|
output = logfile
|
|
}
|
|
}
|
|
plugin := &user{}
|
|
plugin.SetLogger(output, grpc.Trace)
|
|
grpc.Serve(plugin)
|
|
}
|