1c/Ox
1
0
mirror of https://github.com/LazarenkoA/Ox.git synced 2025-11-23 21:33:13 +02:00
Files
Ox/worker/grpc/server.go
Артем 4dca5d34e3 first
2025-10-30 15:51:56 +03:00

31 lines
734 B
Go

package grpc
import (
"context"
"fmt"
grpc_recovery "github.com/grpc-ecosystem/go-grpc-middleware/recovery"
"google.golang.org/grpc"
"load_testing/worker/proto/gen"
"log"
"net"
)
func NewGRPCServer(ctx context.Context, port int, worker gen.WorkerServer) error {
listener, err := net.Listen("tcp", fmt.Sprintf(":%d", port)) // :0 для случайного порта
if err != nil {
return err
}
actualAddr := listener.Addr().String() // ip:port
srv := grpc.NewServer(grpc.ChainStreamInterceptor(grpc_recovery.StreamServerInterceptor()))
gen.RegisterWorkerServer(srv, worker)
go func() {
<-ctx.Done()
srv.Stop()
}()
log.Println("сервер запущен на", actualAddr)
return srv.Serve(listener)
}