本文整理匯總了Golang中github.com/micro/cli.Context類的典型用法代碼示例。如果您正苦於以下問題:Golang Context類的具體用法?Golang Context怎麽用?Golang Context使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Context類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: ListServices
func ListServices(c *cli.Context) ([]byte, error) {
var rsp []*registry.Service
var err error
if p := c.GlobalString("proxy_address"); len(p) > 0 {
if err := get(p+"/registry", &rsp); err != nil {
return nil, err
}
} else {
rsp, err = (*cmd.DefaultOptions().Registry).ListServices()
if err != nil {
return nil, err
}
}
sort.Sort(sortedServices{rsp})
var services []string
for _, service := range rsp {
services = append(services, service.Name)
}
return []byte(strings.Join(services, "\n")), nil
}
示例2: web
func web(ctx *cli.Context) {
opts := []gweb.Option{
gweb.Name("go.micro.web.discovery"),
gweb.Handler(whandler.Router()),
}
opts = append(opts, helper.WebOpts(ctx)...)
templateDir := "discovery/templates"
if dir := ctx.GlobalString("html_dir"); len(dir) > 0 {
templateDir = dir
}
whandler.Init(
templateDir,
proto.NewDiscoveryClient("go.micro.srv.discovery", *cmd.DefaultOptions().Client),
proto2.NewRegistryClient("go.micro.srv.discovery", *cmd.DefaultOptions().Client),
)
service := gweb.NewService(opts...)
if err := service.Run(); err != nil {
log.Fatal(err)
}
}
示例3: DeregisterService
func DeregisterService(c *cli.Context, args []string) ([]byte, error) {
if len(args) == 0 {
return nil, errors.New("require service definition")
}
req := strings.Join(args, " ")
if p := c.GlobalString("proxy_address"); len(p) > 0 {
if err := del(p+"/registry", []byte(req), nil); err != nil {
return nil, err
}
return []byte("ok"), nil
}
var service *registry.Service
d := json.NewDecoder(strings.NewReader(req))
d.UseNumber()
if err := d.Decode(&service); err != nil {
return nil, err
}
if err := (*cmd.DefaultOptions().Registry).Deregister(service); err != nil {
return nil, err
}
return []byte("ok"), nil
}
示例4: srv
func srv(ctx *cli.Context) {
service := micro.NewService(
micro.Name("go.micro.srv.discovery"),
micro.RegisterTTL(
time.Duration(ctx.GlobalInt("register_ttl"))*time.Second,
),
micro.RegisterInterval(
time.Duration(ctx.GlobalInt("register_interval"))*time.Second,
),
micro.BeforeStart(discovery.Start),
micro.AfterStop(discovery.Stop),
)
service.Server().Subscribe(
service.Server().NewSubscriber(
discovery.HeartbeatTopic,
discovery.Default.ProcessHeartbeat,
),
)
service.Server().Subscribe(
service.Server().NewSubscriber(
discovery.WatchTopic,
discovery.Default.ProcessResult,
),
)
proto.RegisterDiscoveryHandler(service.Server(), new(handler.Discovery))
proto2.RegisterRegistryHandler(service.Server(), new(handler.Registry))
if err := service.Run(); err != nil {
log.Fatal(err)
}
}
示例5: Init
func (r *router) Init(ctx *cli.Context) error {
// TODO: Make this more configurable and add more sources
var conf config.Config
if c := ctx.String("config_source"); len(c) == 0 && r.opts.Config == nil {
return errors.New("config source must be defined")
} else if len(c) > 0 {
var source config.Source
switch c {
case "platform":
source = config.NewSource()
case "file":
fileName := DefaultFile
parts := strings.Split(c, ":")
if len(parts) > 1 {
fileName = parts[1]
}
source = file.NewSource(config.SourceName(fileName))
default:
return errors.New("Unknown config source " + c)
}
conf = config.NewConfig(config.WithSource(source))
} else {
conf = r.opts.Config
}
go r.run(conf)
return nil
}
示例6: QueryService
func QueryService(c *cli.Context, args []string) ([]byte, error) {
if len(args) < 2 {
return nil, errors.New("require service and method")
}
var req, service, method string
service = args[0]
method = args[1]
if len(args) > 2 {
req = strings.Join(args[2:], " ")
}
// empty request
if len(req) == 0 {
req = `{}`
}
var request map[string]interface{}
var response json.RawMessage
if p := c.GlobalString("proxy_address"); len(p) > 0 {
request = map[string]interface{}{
"service": service,
"method": method,
"request": req,
}
b, err := json.Marshal(request)
if err != nil {
return nil, err
}
if err := post(p+"/rpc", b, &response); err != nil {
return nil, err
}
} else {
d := json.NewDecoder(strings.NewReader(req))
d.UseNumber()
if err := d.Decode(&request); err != nil {
return nil, err
}
creq := (*cmd.DefaultOptions().Client).NewJsonRequest(service, method, request)
err := (*cmd.DefaultOptions().Client).Call(context.Background(), creq, &response)
if err != nil {
return nil, fmt.Errorf("error calling %s.%s: %v\n", service, method, err)
}
}
var out bytes.Buffer
defer out.Reset()
if err := json.Indent(&out, response, "", "\t"); err != nil {
return nil, err
}
return out.Bytes(), nil
}
示例7: getService
func getService(c *cli.Context) {
rsp, err := command.GetService(c, c.Args())
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(rsp))
}
示例8: queryHealth
func queryHealth(c *cli.Context) {
rsp, err := command.QueryHealth(c, c.Args())
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(rsp))
}
示例9: getService
func getService(c *cli.Context) {
if !c.Args().Present() {
fmt.Println("Service required")
return
}
service, err := (*cmd.DefaultOptions().Registry).GetService(c.Args().First())
if err != nil {
fmt.Println(err.Error())
return
}
if len(service) == 0 {
fmt.Println("Service not found")
return
}
fmt.Printf("service %s\n", service[0].Name)
for _, serv := range service {
fmt.Println("\nversion ", serv.Version)
fmt.Println("\nId\tAddress\tPort\tMetadata")
for _, node := range serv.Nodes {
var meta []string
for k, v := range node.Metadata {
meta = append(meta, k+"="+v)
}
fmt.Printf("%s\t%s\t%d\t%s\n", node.Id, node.Address, node.Port, strings.Join(meta, ","))
}
}
for _, e := range service[0].Endpoints {
var request, response string
var meta []string
for k, v := range e.Metadata {
meta = append(meta, k+"="+v)
}
if e.Request != nil && len(e.Request.Values) > 0 {
request = "{\n"
for _, v := range e.Request.Values {
request += formatEndpoint(v, 0)
}
request += "}"
} else {
request = "{}"
}
if e.Response != nil && len(e.Response.Values) > 0 {
response = "{\n"
for _, v := range e.Response.Values {
response += formatEndpoint(v, 0)
}
response += "}"
} else {
response = "{}"
}
fmt.Printf("\nEndpoint: %s\nMetadata: %s\n", e.Name, strings.Join(meta, ","))
fmt.Printf("Request: %s\n\nResponse: %s\n", request, response)
}
}
示例10: Init
func (p *slackInput) Init(ctx *cli.Context) error {
debug := ctx.Bool("slack_debug")
token := ctx.String("slack_token")
if len(token) == 0 {
return errors.New("missing slack token")
}
p.debug = debug
p.token = token
return nil
}
示例11: srv
func srv(ctx *cli.Context) {
service := micro.NewService(
micro.Name("go.micro.srv.auth"),
micro.RegisterTTL(
time.Duration(ctx.GlobalInt("register_ttl"))*time.Second,
),
micro.RegisterInterval(
time.Duration(ctx.GlobalInt("register_interval"))*time.Second,
),
)
if len(ctx.GlobalString("database_url")) > 0 {
mysql.Url = ctx.GlobalString("database_url")
}
// register account handler
account.RegisterAccountHandler(service.Server(), new(handler.Account))
// register oauth2 handler
oauth2.RegisterOauth2Handler(service.Server(), new(handler.Oauth2))
// initialise database
if err := db.Init(); err != nil {
log.Fatal(err)
}
if err := service.Run(); err != nil {
log.Fatal(err)
}
}
示例12: srv
func srv(ctx *cli.Context) {
service := micro.NewService(
micro.Name("go.micro.srv.trace"),
micro.RegisterTTL(
time.Duration(ctx.GlobalInt("register_ttl"))*time.Second,
),
micro.RegisterInterval(
time.Duration(ctx.GlobalInt("register_interval"))*time.Second,
),
)
if len(ctx.GlobalString("database_url")) > 0 {
mysql.Url = ctx.GlobalString("database_url")
}
proto.RegisterTraceHandler(service.Server(), new(handler.Trace))
service.Server().Subscribe(
service.Server().NewSubscriber(trace.TraceTopic, trace.ProcessSpan),
)
if err := db.Init(); err != nil {
log.Fatal(err)
}
if err := service.Run(); err != nil {
log.Fatal(err)
}
}
示例13: streamService
// TODO: stream via HTTP
func streamService(c *cli.Context) {
if len(c.Args()) < 2 {
fmt.Println("require service and method")
return
}
service := c.Args()[0]
method := c.Args()[1]
var request map[string]interface{}
json.Unmarshal([]byte(strings.Join(c.Args()[2:], " ")), &request)
req := (*cmd.DefaultOptions().Client).NewJsonRequest(service, method, request)
stream, err := (*cmd.DefaultOptions().Client).Stream(context.Background(), req)
if err != nil {
fmt.Printf("error calling %s.%s: %v\n", service, method, err)
return
}
if err := stream.Send(request); err != nil {
fmt.Printf("error sending to %s.%s: %v\n", service, method, err)
return
}
for {
var response map[string]interface{}
if err := stream.Recv(&response); err != nil {
fmt.Printf("error receiving from %s.%s: %v\n", service, method, err)
return
}
b, _ := json.MarshalIndent(response, "", "\t")
fmt.Println(string(b))
// artificial delay
time.Sleep(time.Millisecond * 10)
}
}
示例14: srv
func srv(ctx *cli.Context) {
service := micro.NewService(
micro.Name("go.micro.srv.db"),
micro.RegisterTTL(
time.Duration(ctx.GlobalInt("register_ttl"))*time.Second,
),
micro.RegisterInterval(
time.Duration(ctx.GlobalInt("register_interval"))*time.Second,
),
)
if len(ctx.String("database_service_namespace")) > 0 {
db.DBServiceNamespace = ctx.String("database_service_namespace")
}
proto.RegisterDBHandler(service.Server(), new(handler.DB))
if err := db.Init(service.Client().Options().Selector); err != nil {
log.Fatal(err)
}
if err := service.Run(); err != nil {
log.Fatal(err)
}
}
示例15: srv
func srv(ctx *cli.Context) {
service := micro.NewService(
micro.Name("go.micro.srv.config"),
micro.RegisterTTL(
time.Duration(ctx.GlobalInt("register_ttl"))*time.Second,
),
micro.RegisterInterval(
time.Duration(ctx.GlobalInt("register_interval"))*time.Second,
),
)
if len(ctx.GlobalString("database_url")) > 0 {
mysql.Url = ctx.GlobalString("database_url")
}
proto.RegisterConfigHandler(service.Server(), new(handler.Config))
// subcriber to watches
service.Server().Subscribe(service.Server().NewSubscriber(config.WatchTopic, config.Watcher))
if err := config.Init(); err != nil {
log.Fatal(err)
}
if err := db.Init(); err != nil {
log.Fatal(err)
}
if err := service.Run(); err != nil {
log.Fatal(err)
}
}