blob: 6db83389b82f431baa228e028ecb3acdd590bdfa [file] [log] [blame]
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) {
log.Printf("Returing from Get now.")
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)
}