Documentation
¶
Overview ¶
Package search implementa el recorrido concurrente de directorios.
El recorrido usa un número acotado de goroutines: cada subdirectorio se entrega a una goroutine nueva si hay un "slot" libre en el semáforo; si no, la goroutine actual lo procesa en línea (en profundidad). Así nunca hay más de Workers goroutines activas, no puede producirse un interbloqueo y los núcleos se mantienen ocupados mientras quede trabajo pendiente.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultWorkers ¶
func DefaultWorkers() int
DefaultWorkers devuelve el grado de concurrencia por defecto. Leer directorios es una operación dominada por E/S, así que conviene tener más goroutines que núcleos.
Types ¶
type Matcher ¶
type Matcher struct {
// contains filtered or unexported fields
}
Matcher compara nombres de carpeta con un término de búsqueda, sin distinguir mayúsculas de minúsculas (igual que el sistema de archivos de Windows).
- Sin comodines, el término se busca como subcadena: "proy" coincide con "Proyectos" y con "mi-proyecto".
- Con comodines (* ? [..]) el patrón debe cubrir el nombre completo: "proy*" coincide con "Proyectos" pero no con "mi-proyecto".
func NewMatcher ¶
NewMatcher crea un Matcher y valida la sintaxis del patrón.
type Options ¶
type Options struct {
// Root es el directorio desde el que comienza el recorrido. Debe ser una
// ruta ya resuelta (sin variables de entorno).
Root string
// Matcher decide qué nombres de carpeta coinciden.
Matcher *Matcher
// IncludeHidden incluye carpetas ocultas y de sistema.
IncludeHidden bool
// Workers es el máximo de goroutines de recorrido simultáneas.
// Si es <= 0 se usa DefaultWorkers().
Workers int
}
Options configura una búsqueda.
type Stats ¶
type Stats struct {
// contains filtered or unexported fields
}
Stats contiene los contadores de una búsqueda. Sus valores son definitivos una vez que el canal de resultados se ha cerrado.
func Start ¶
Start inicia la búsqueda en segundo plano y devuelve un canal por el que se emite la ruta completa de cada carpeta coincidente. El canal se cierra al terminar el recorrido o al cancelarse ctx.