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 }