93 lines
2.0 KiB
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)
|
|
}
|