github.com/micro/go-micro/examples@v0.0.0-20210105173217-bf4ab679e18b/wrapper/main.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  
     7  	"context"
     8  	proto "github.com/micro/go-micro/examples/service/proto"
     9  	"github.com/micro/go-micro/v2"
    10  	"github.com/micro/go-micro/v2/server"
    11  )
    12  
    13  type Greeter struct{}
    14  
    15  func (g *Greeter) Hello(ctx context.Context, req *proto.Request, rsp *proto.Response) error {
    16  	rsp.Greeting = "Hello " + req.Name
    17  	return nil
    18  }
    19  
    20  // logWrapper is a handler wrapper
    21  func logWrapper(fn server.HandlerFunc) server.HandlerFunc {
    22  	return func(ctx context.Context, req server.Request, rsp interface{}) error {
    23  		log.Printf("[wrapper] server request: %v", req.Endpoint())
    24  		err := fn(ctx, req, rsp)
    25  		return err
    26  	}
    27  }
    28  
    29  func main() {
    30  	service := micro.NewService(
    31  		micro.Name("greeter"),
    32  		// wrap the handler
    33  		micro.WrapHandler(logWrapper),
    34  	)
    35  
    36  	service.Init()
    37  
    38  	proto.RegisterGreeterHandler(service.Server(), new(Greeter))
    39  
    40  	if err := service.Run(); err != nil {
    41  		fmt.Println(err)
    42  	}
    43  }