Skip to content

Instantly share code, notes, and snippets.

@muhtarh
Created October 28, 2019 17:10
Show Gist options
  • Save muhtarh/d0d202833b3ebf9bd09ab50e8d59180b to your computer and use it in GitHub Desktop.
Save muhtarh/d0d202833b3ebf9bd09ab50e8d59180b to your computer and use it in GitHub Desktop.
syntax = "proto3";
option java_multiple_files = true;
option java_package = "com.udaraapi.rpc.book";
package book;
service BookService {
rpc findAll(Empty) returns (BookMessageList);
rpc addBook(BookMessage) returns (BookMessage);
}
message BookMessage {
string title = 1;
string author = 2;
string isbn = 3;
string category = 4;
}
message BookMessageList {
repeated BookMessage book = 1;
}
message Empty {}
package main
import (
"context"
pb "gogrpc/book"
"log"
"google.golang.org/grpc"
)
func main() {
conn, err := grpc.Dial(":6565", grpc.WithInsecure())
if err != nil {
log.Fatalf("did not connect: %s", err)
}
defer conn.Close()
client := pb.NewBookServiceClient(conn)
response, err := client.FindAll(context.Background(), &pb.Empty{})
log.Printf("Response from server: %v \n", response)
}
package main
import (
"context"
"flag"
"fmt"
pb "gogrpc/book"
"log"
"net"
"google.golang.org/grpc"
)
var (
port = flag.Int("port", 6565, "The server port")
)
type bookServer struct {
pb.UnimplementedBookServiceServer
pb.BookMessageList
pb.BookMessage
}
func (s *bookServer) FindAll(ctx context.Context, empty *pb.Empty) (*pb.BookMessageList, error) {
var bookMessages = []*pb.BookMessage{
&pb.BookMessage{
Title: "Captain america",
Author: "Stan Lee",
Isbn: "1234567800",
Category: "comic",
},
&pb.BookMessage{
Title: "Iron Man",
Author: "Stan Lee",
Isbn: "1234567800",
Category: "comic",
},
}
return &pb.BookMessageList{Book: bookMessages}, nil
}
func (s *bookServer) AddBook(ctx context.Context, bookMessage *pb.BookMessage) (*pb.BookMessage, error) {
fmt.Println("receive add book")
return bookMessage, nil
}
func main() {
flag.Parse()
lis, err := net.Listen("tcp", fmt.Sprintf("localhost:%d", *port))
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
log.Println("Starting server localhost:", *port)
server := &bookServer{}
grpcServer := grpc.NewServer()
pb.RegisterBookServiceServer(grpcServer, server)
grpcServer.Serve(lis)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment