// Package grpcprocess provides [process.Runner] wrapper for [grpc.Server].
package grpcprocess import ( ) // Server returns a [process.Runner] instance for the given gRPC server and // network listener. func ( *grpc.Server, net.Listener) process.Runner { return process.Leaf( func( context.Context) error { // TODO: consider injecting base context into gRPC’s // internal/transport/http2_server.go NewServerTransport. return .Serve() }, func( context.Context) error { := make(chan struct{}) go func() { .GracefulStop() close() }() select { case <-.Done(): // Note that Stop interrupts GracefulStop when // called concurrently. .Stop() <- case <-: } return nil }, ) }