Files
umbrix-libcore/v2/grpc_server.go

69 lines
1.6 KiB
Go
Raw Normal View History

2024-03-10 19:45:03 +01:00
package v2
/*
#include "stdint.h"
*/
import (
"log"
"net"
2024-09-26 23:16:20 +02:00
"github.com/hiddify/hiddify-core/extension"
2024-03-22 16:25:56 +00:00
pb "github.com/hiddify/hiddify-core/hiddifyrpc"
2024-09-26 23:16:20 +02:00
2024-03-10 19:45:03 +01:00
"google.golang.org/grpc"
)
type HelloService struct {
pb.UnimplementedHelloServer
}
type CoreService struct {
pb.UnimplementedCoreServer
2024-03-10 19:45:03 +01:00
}
type TunnelService struct {
pb.UnimplementedTunnelServiceServer
2024-03-10 19:45:03 +01:00
}
2024-09-26 23:16:20 +02:00
func StartGrpcServer(listenAddressG string, service string) (*grpc.Server, error) {
2024-03-10 19:45:03 +01:00
lis, err := net.Listen("tcp", listenAddressG)
if err != nil {
log.Printf("failed to listen: %v", err)
2024-09-26 23:16:20 +02:00
return nil, err
2024-03-10 19:45:03 +01:00
}
s := grpc.NewServer()
if service == "core" {
// Setup("./tmp/", "./tmp", "./tmp", 11111, false)
useFlutterBridge = false
pb.RegisterCoreServer(s, &CoreService{})
2024-09-26 23:16:20 +02:00
pb.RegisterExtensionHostServiceServer(s, &extension.ExtensionHostService{})
} else if service == "hello" {
pb.RegisterHelloServer(s, &HelloService{})
} else if service == "tunnel" {
pb.RegisterTunnelServiceServer(s, &TunnelService{})
}
2024-03-10 19:45:03 +01:00
log.Printf("Server listening on %s", listenAddressG)
go func() {
if err := s.Serve(lis); err != nil {
log.Printf("failed to serve: %v", err)
}
2024-09-26 23:16:20 +02:00
log.Printf("Server stopped")
// cancel()
2024-03-10 19:45:03 +01:00
}()
2024-09-26 23:16:20 +02:00
return s, nil
2024-03-10 19:45:03 +01:00
}
2024-09-26 23:16:20 +02:00
func StartCoreGrpcServer(listenAddressG string) (*grpc.Server, error) {
return StartGrpcServer(listenAddressG, "core")
}
2024-09-26 23:16:20 +02:00
func StartHelloGrpcServer(listenAddressG string) (*grpc.Server, error) {
return StartGrpcServer(listenAddressG, "hello")
}
2024-09-26 23:16:20 +02:00
func StartTunnelGrpcServer(listenAddressG string) (*grpc.Server, error) {
return StartGrpcServer(listenAddressG, "tunnel")
}