Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions client/buffer.go

This file was deleted.

30 changes: 6 additions & 24 deletions client/client.go
Original file line number Diff line number Diff line change
@@ -1,33 +1,15 @@
package client

type RequestFunc func(address string) (err error)

type Client interface {
NewRequest(string, string, interface{}) Request
NewProtoRequest(string, string, interface{}) Request
NewJsonRequest(string, string, interface{}) Request
Call(interface{}, interface{}) error
CallRemote(string, string, interface{}, interface{}) error
NewRequest(service string, f RequestFunc) error
}

var (
client = NewRpcClient()
client = NewGRPCClient()
)

func Call(request Request, response interface{}) error {
return client.Call(request, response)
}

func CallRemote(address, path string, request Request, response interface{}) error {
return client.CallRemote(address, path, request, response)
}

func NewRequest(service, method string, request interface{}) Request {
return client.NewRequest(service, method, request)
}

func NewProtoRequest(service, method string, request interface{}) Request {
return client.NewProtoRequest(service, method, request)
}

func NewJsonRequest(service, method string, request interface{}) Request {
return client.NewJsonRequest(service, method, request)
func NewRequest(service string, f RequestFunc) error {
return client.NewRequest(service, f)
}
56 changes: 56 additions & 0 deletions client/grpc_client.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package client

import (
"fmt"
"github.com/asim/go-micro/registry"
"math/rand"
"net/http"
"time"

"github.com/asim/go-micro/errors"
"google.golang.org/grpc"
)

type headerRoundTripper struct {
r http.RoundTripper
}

type GRPCClient struct{}

func init() {
rand.Seed(time.Now().UnixNano())
}

func (r *GRPCClient) NewRequest(serviceName string, f RequestFunc) error {
service, err := registry.GetService(serviceName)
if err != nil {
return errors.InternalServerError("go.micro.client", err.Error())
}

if len(service.Nodes()) == 0 {
return errors.NotFound("go.micro.client", "Service not found")
}

n := rand.Int() % len(service.Nodes())
node := service.Nodes()[n]
address := fmt.Sprintf("%s:%d", node.Address(), node.Port())

return f(address)
}

func NewGRPCClient() *GRPCClient {
return &GRPCClient{}
}

func GRPCRequest(f func(cc *grpc.ClientConn) error) RequestFunc {
return func(address string) error {
fmt.Println(address)
cc, err := grpc.Dial(address)
if err != nil {
return err
}
defer cc.Close()

return f(cc)
}
}
9 changes: 0 additions & 9 deletions client/request.go

This file was deleted.

157 changes: 0 additions & 157 deletions client/rpc_client.go

This file was deleted.

45 changes: 0 additions & 45 deletions client/rpc_request.go

This file was deleted.

Binary file added examples/greeter-client/greeter-client
Binary file not shown.
37 changes: 37 additions & 0 deletions examples/greeter-client/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package main

import (
"os"

"github.com/asim/go-micro/client"
log "github.com/golang/glog"
"golang.org/x/net/context"
"google.golang.org/grpc"

pb "github.com/asim/go-micro/examples/greeter-service/proto"
)

const (
defaultName = "world"
)

func main() {
name := defaultName
if len(os.Args) > 1 {
name = os.Args[1]
}

// Create new request to service go.micro.service.go-template
var r *pb.HelloReply
err := client.NewRequest("go.micro.service.greeter", client.GRPCRequest(func(cc *grpc.ClientConn) (err error) {
c := pb.NewGreeterClient(cc)
r, err = c.SayHello(context.Background(), &pb.HelloRequest{Name: name})
return
}))
if err != nil {
log.Fatalf("could not greet: %v", err)
}

log.Infof("Greeting: %s", r.Message)

}
3 changes: 3 additions & 0 deletions examples/greeter-service/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
FROM scratch
ADD template /
ENTRYPOINT [ "/template" ]
30 changes: 30 additions & 0 deletions examples/greeter-service/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Template Service

An example Go service running with go-micro

### Prerequisites

Install Consul
[https://www.consul.io/intro/getting-started/install.html](https://www.consul.io/intro/getting-started/install.html)

Run Consul
```
$ consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul
```

Run Service
```
$ go run main.go

1416690099281057746 [Debug] Rpc handler /_rpc
1416690099281092588 [Debug] Starting server go.micro.service.template id go.micro.service.template-c0bfcb44-728a-11e4-b099-68a86d0d36b6
1416690099281192941 [Debug] Listening on [::]:58264
1416690099281215346 [Debug] Registering go.micro.service.template-c0bfcb44-728a-11e4-b099-68a86d0d36b6
```

Test Service
```
$ go run go-micro/examples/service_client.go

go.micro.service.template-c0bfcb44-728a-11e4-b099-68a86d0d36b6: Hello John
```
Binary file added examples/greeter-service/greeter-service
Binary file not shown.
Loading