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

     1  package main
     2  
     3  import (
     4  	"log"
     5  
     6  	"context"
     7  	"github.com/micro/go-micro/examples/server/subscriber"
     8  	"github.com/micro/go-micro/v2/config/cmd"
     9  	"github.com/micro/go-micro/v2/server"
    10  
    11  	example "github.com/micro/go-micro/examples/server/proto/example"
    12  )
    13  
    14  type Example struct{}
    15  
    16  func (e *Example) Call(ctx context.Context, req *example.Request, rsp *example.Response) error {
    17  	log.Print("Received Example.Call request")
    18  	rsp.Msg = server.DefaultOptions().Id + ": Hello " + req.Name
    19  	return nil
    20  }
    21  
    22  func (e *Example) Stream(ctx context.Context, req *example.StreamingRequest, stream example.Example_StreamStream) error {
    23  	log.Printf("Received Example.Stream request with count: %d", req.Count)
    24  
    25  	for i := 0; i < int(req.Count); i++ {
    26  		log.Printf("Responding: %d", i)
    27  		if err := stream.Send(&example.StreamingResponse{
    28  			Count: int64(i),
    29  		}); err != nil {
    30  			return err
    31  		}
    32  	}
    33  
    34  	return nil
    35  }
    36  
    37  func (e *Example) PingPong(ctx context.Context, stream example.Example_PingPongStream) error {
    38  	for {
    39  		req, err := stream.Recv()
    40  		if err != nil {
    41  			return err
    42  		}
    43  		log.Printf("Got ping %v", req.Stroke)
    44  		if err := stream.Send(&example.Pong{Stroke: req.Stroke}); err != nil {
    45  			return err
    46  		}
    47  	}
    48  }
    49  
    50  func main() {
    51  	// optionally setup command line usage
    52  	cmd.Init()
    53  
    54  	// Initialise Server
    55  	server.Init(
    56  		server.Name("go.micro.srv.example"),
    57  	)
    58  
    59  	// Register Subscribers
    60  	server.Subscribe(
    61  		server.NewSubscriber(
    62  			"topic.go.micro.srv.example",
    63  			new(subscriber.Example),
    64  		),
    65  	)
    66  
    67  	server.Subscribe(
    68  		server.NewSubscriber(
    69  			"topic.go.micro.srv.example",
    70  			subscriber.Handler,
    71  		),
    72  	)
    73  
    74  	// Register Handler
    75  	example.RegisterExampleHandler(
    76  		server.DefaultServer, new(Example),
    77  	)
    78  
    79  	// Run server
    80  	if err := server.Run(); err != nil {
    81  		log.Fatal(err)
    82  	}
    83  }