gemstone

package module
v0.0.0-...-19d66a1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 11, 2017 License: MIT Imports: 16 Imported by: 0

README

💎 Gemstone

Go microservice framework

Installation

go get -u github.com/cryptopay-dev/gemstone

Usage

Server
package main

import (
	"fmt"
	"os"

	"github.com/cryptopay-dev/gemstone"
	proto "github.com/cryptopay-dev/gemstone/examples/proto"
	"golang.org/x/net/context"
	"google.golang.org/grpc/reflection"
)

type Greeter struct {
	service gemstone.Service
}

func (g *Greeter) Hello(ctx context.Context, req *proto.HelloRequest) (res *proto.HelloResponse, err error) {
	g.service.Logger().Infof("We have new greeting request from %s", req.Name)

	return &proto.HelloResponse{Greeting: "Hello, " + req.Name}, nil
}

func main() {
	service, err := gemstone.NewService(
		gemstone.Version("1.0.0"),
		gemstone.Name("greeter"),
	)
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	greeter := &Greeter{
		service: service,
	}
	proto.RegisterGreeterServer(service.Server(), greeter)
	reflection.Register(service.Server())

	if err := service.Run(); err != nil {
		fmt.Println(err)
	}
}

Client
package main

import (
	"fmt"
	"os"

	"github.com/cryptopay-dev/gemstone"
	proto "github.com/cryptopay-dev/gemstone/examples/proto"
	"golang.org/x/net/context"
)

func main() {
	// Create a new service. Optionally include some options here.
	service, err := gemstone.NewService()
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	// Create new greeter client
	client, err := service.Client("greeter")
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
	defer client.Close()

	greeter := proto.NewGreeterClient(client)

	// Call the greeter
	rsp, err := greeter.Hello(context.Background(), &proto.HelloRequest{Name: "John"})
	if err != nil {
		fmt.Println(err)
	}

	// Print response
	fmt.Println(rsp.Greeting)
}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	DefaultServiceName = "microservice"
	DefaultVersion     = "0.0.0"
	DefaultAddress     = "localhost:0"
	DefaultLogger      = zap.New()
)

Functions

This section is empty.

Types

type DefaultService

type DefaultService struct {
	// contains filtered or unexported fields
}

func (*DefaultService) Client

func (s *DefaultService) Client(name string) (*grpc.ClientConn, error)

func (*DefaultService) Logger

func (s *DefaultService) Logger() logger.Logger

func (*DefaultService) Run

func (s *DefaultService) Run() error

func (*DefaultService) Server

func (s *DefaultService) Server() *grpc.Server

func (*DefaultService) Use

func (s *DefaultService) Use() error

type Next

type Next func() (*registry.Service, error)

func RoundRobin

func RoundRobin(services []*registry.Service) Next

type Option

type Option func(*Options)

func Address

func Address(address string) Option

func Logger

func Logger(logger logger.Logger) Option

func Name

func Name(name string) Option

func Registry

func Registry(registry registry.Registry) Option

func Version

func Version(version string) Option

type Options

type Options struct {
	Logger   logger.Logger
	Registry registry.Registry
	Address  string
	Name     string
	Version  string
}

type Service

type Service interface {
	Run() error
	Server() *grpc.Server
	Client(string) (*grpc.ClientConn, error)
	Logger() logger.Logger
}

func NewService

func NewService(opts ...Option) (Service, error)

Directories

Path Synopsis
examples
proto
Package greeter is a generated protocol buffer package.
Package greeter is a generated protocol buffer package.
nop
zap

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL