| package main |
| |
| import ( |
| "log" |
| "math/rand" |
| "net" |
| |
| "golang.org/x/net/context" |
| "google.golang.org/grpc" |
| pb "v.io/x/ref/examples/grpc-fortune/proto" |
| "v.io/x/ref/examples/grpc-fortune/vgrpc" |
| ) |
| |
| const ( |
| port = ":50053" |
| ) |
| |
| var ( |
| fortunes = []string{ |
| "앞으로 소녀시대 직접 만날 거예요", |
| "혼자 죽을 거예요", |
| "오래살고 돈 많아 벌 거예요", |
| } |
| random = rand.New(rand.NewSource(99)) |
| ) |
| |
| // TODO(krakauer): Add mutexes once the auth stuff works. |
| |
| type server struct{} |
| |
| func (s *server) Get(ctx context.Context, in *pb.FortuneGetRequest) (*pb.FortuneGetResponse, error) { |
| return &pb.FortuneGetResponse{ |
| Fortune: fortunes[random.Intn(len(fortunes))], |
| }, nil |
| } |
| |
| func (s *server) Add(ctx context.Context, in *pb.FortuneAddRequest) (*pb.FortuneAddResponse, error) { |
| fortunes = append(fortunes, in.Fortune) |
| return &pb.FortuneAddResponse{Succeeded: true}, nil |
| } |
| |
| func (s *server) Has(ctx context.Context, in *pb.FortuneHasRequest) (*pb.FortuneHasResponse, error) { |
| for _, f := range fortunes { |
| if f == in.Fortune { |
| return &pb.FortuneHasResponse{Has: true}, nil |
| } |
| } |
| return &pb.FortuneHasResponse{Has: false}, nil |
| } |
| |
| func main() { |
| lis, err := net.Listen("tcp", port) |
| if err != nil { |
| log.Fatalf("failed to listen: %v", err) |
| } |
| s := grpc.NewServer(grpc.Creds(&vgrpc.VanadiumCred{})) |
| pb.RegisterFortuneServer(s, &server{}) |
| s.Serve(lis) |
| } |