Codebase list golang-github-go-kit-kit / 59e3f73 examples / addsvc / client / netrpc / factory.go
59e3f73

Tree @59e3f73 (Download .tar.gz)

factory.go @59e3f73raw · history · blame

package netrpc

import (
	"io"
	"net/rpc"

	"golang.org/x/net/context"

	"github.com/go-kit/kit/endpoint"
	"github.com/go-kit/kit/examples/addsvc/server"
)

// SumEndpointFactory transforms host:port strings into Endpoints.
func SumEndpointFactory(instance string) (endpoint.Endpoint, io.Closer, error) {
	client, err := rpc.DialHTTP("tcp", instance)
	if err != nil {
		return nil, nil, err
	}

	return func(ctx context.Context, request interface{}) (interface{}, error) {
		var reply server.SumResponse
		if err := client.Call("addsvc.Sum", request.(server.SumRequest), &reply); err != nil {
			return server.SumResponse{}, err
		}
		return reply, nil
	}, client, nil
}

// ConcatEndpointFactory transforms host:port strings into Endpoints.
func ConcatEndpointFactory(instance string) (endpoint.Endpoint, io.Closer, error) {
	client, err := rpc.DialHTTP("tcp", instance)
	if err != nil {
		return nil, nil, err
	}

	return func(ctx context.Context, request interface{}) (interface{}, error) {
		var reply server.ConcatResponse
		if err := client.Call("addsvc.Concat", request.(server.ConcatRequest), &reply); err != nil {
			return server.ConcatResponse{}, err
		}
		return reply, nil
	}, client, nil
}