func serveGRPC(l net.Listener) { s := grpc.NewServer(grpc.CustomCodec(&query.Codec{})) graph.RegisterDgraphServer(s, &grpcServer{}) if err := s.Serve(l); err != nil { log.Fatalf("While serving gRpc request: %v", err) } }
func main() { lis, err := net.Listen("tcp", port) if err != nil { log.Fatalf("failed to listen: %v", err) } s := grpc.NewServer(grpc.CustomCodec(&codec.Buffer{})) fb.RegisterWorkerServer(s, &server{}) s.Serve(lis) }
func Server(s *etcdserver.EtcdServer, tls *tls.Config) *grpc.Server { var opts []grpc.ServerOption opts = append(opts, grpc.CustomCodec(&codec{})) if tls != nil { opts = append(opts, grpc.Creds(credentials.NewTLS(tls))) } opts = append(opts, grpc.UnaryInterceptor(newUnaryInterceptor(s))) opts = append(opts, grpc.StreamInterceptor(newStreamInterceptor(s))) grpcServer := grpc.NewServer(opts...) pb.RegisterKVServer(grpcServer, NewQuotaKVServer(s)) pb.RegisterWatchServer(grpcServer, NewWatchServer(s)) pb.RegisterLeaseServer(grpcServer, NewQuotaLeaseServer(s)) pb.RegisterClusterServer(grpcServer, NewClusterServer(s)) pb.RegisterAuthServer(grpcServer, NewAuthServer(s)) pb.RegisterMaintenanceServer(grpcServer, NewMaintenanceServer(s)) return grpcServer }
func startBenchmarkServer(config *testpb.ServerConfig, serverPort int) (*benchmarkServer, error) { printServerConfig(config) // Use one cpu core by default. // TODO: Revisit this for the optimal default setup. numOfCores := 1 if config.CoreLimit > 1 { numOfCores = int(config.CoreLimit) } runtime.GOMAXPROCS(numOfCores) var opts []grpc.ServerOption // Sanity check for server type. switch config.ServerType { case testpb.ServerType_SYNC_SERVER: case testpb.ServerType_ASYNC_SERVER: case testpb.ServerType_ASYNC_GENERIC_SERVER: default: return nil, grpc.Errorf(codes.InvalidArgument, "unknow server type: %v", config.ServerType) } // Set security options. if config.SecurityParams != nil { creds, err := credentials.NewServerTLSFromFile(abs(certFile), abs(keyFile)) if err != nil { grpclog.Fatalf("failed to generate credentials %v", err) } opts = append(opts, grpc.Creds(creds)) } // Priority: config.Port > serverPort > default (0). port := int(config.Port) if port == 0 { port = serverPort } // Create different benchmark server according to config. var ( addr string closeFunc func() err error ) if config.PayloadConfig != nil { switch payload := config.PayloadConfig.Payload.(type) { case *testpb.PayloadConfig_BytebufParams: opts = append(opts, grpc.CustomCodec(byteBufCodec{})) addr, closeFunc = benchmark.StartServer(benchmark.ServerInfo{ Addr: ":" + strconv.Itoa(port), Type: "bytebuf", Metadata: payload.BytebufParams.RespSize, }, opts...) case *testpb.PayloadConfig_SimpleParams: addr, closeFunc = benchmark.StartServer(benchmark.ServerInfo{ Addr: ":" + strconv.Itoa(port), Type: "protobuf", }, opts...) case *testpb.PayloadConfig_ComplexParams: return nil, grpc.Errorf(codes.Unimplemented, "unsupported payload config: %v", config.PayloadConfig) default: return nil, grpc.Errorf(codes.InvalidArgument, "unknow payload config: %v", config.PayloadConfig) } } else { // Start protobuf server if payload config is nil. addr, closeFunc = benchmark.StartServer(benchmark.ServerInfo{ Addr: ":" + strconv.Itoa(port), Type: "protobuf", }, opts...) } grpclog.Printf("benchmark server listening at %v", addr) addrSplitted := strings.Split(addr, ":") p, err := strconv.Atoi(addrSplitted[len(addrSplitted)-1]) if err != nil { grpclog.Fatalf("failed to get port number from server address: %v", err) } return &benchmarkServer{port: p, cores: numOfCores, closeFunc: closeFunc, lastResetTime: time.Now()}, nil }