Files
backend/cloudprint-backend/internal/grpc/server.go

93 lines
2.0 KiB
Go

package grpc
import (
"fmt"
"net"
"github.com/cloudprint/cloudprint-backend/internal/grpc/interceptor"
pb "github.com/cloudprint/cloudprint-backend/proto/generated"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
)
type Server struct {
grpcServer *grpc.Server
port int
}
type ServerOption func(*Server)
func WithPort(port int) ServerOption {
return func(s *Server) {
s.port = port
}
}
func NewServer(opts ...ServerOption) *Server {
s := &Server{
port: 8080,
}
for _, opt := range opts {
opt(s)
}
return s
}
func (s *Server) RegisterServices(grpcServer *grpc.Server) {
// Services will be registered here
// This is a placeholder for the actual service registration
}
func (s *Server) Start() error {
lis, err := net.Listen("tcp", fmt.Sprintf(":%d", s.port))
if err != nil {
return fmt.Errorf("failed to listen: %v", err)
}
s.grpcServer = grpc.NewServer(
grpc.UnaryInterceptor(interceptor.AuthInterceptor{}.UnaryServerInterceptor()),
)
// Register reflection service for debugging
reflection.Register(s.grpcServer)
if err := s.grpcServer.Serve(lis); err != nil {
return fmt.Errorf("failed to serve: %v", err)
}
return nil
}
func (s *Server) Stop() {
if s.grpcServer != nil {
s.grpcServer.GracefulStop()
}
}
// Register all gRPC services
func RegisterServices(grpcServer *grpc.Server) {
// AuthService
// pb.RegisterAuthServiceServer(grpcServer, authServiceServer)
// FileService
// pb.RegisterFileServiceServer(grpcServer, fileServiceServer)
// OrderService
// pb.RegisterOrderServiceServer(grpcServer, orderServiceServer)
// PrintService
// pb.RegisterPrintServiceServer(grpcServer, printServiceServer)
// LibraryService
// pb.RegisterLibraryServiceServer(grpcServer, libraryServiceServer)
// PriceService
// pb.RegisterPriceServiceServer(grpcServer, priceServiceServer)
// PayService
// pb.RegisterPayServiceServer(grpcServer, payServiceServer)
// AdminService
// pb.RegisterAdminServiceServer(grpcServer, adminServiceServer)
}