Files
houston/client/pipe_reader_windows.go
2025-07-01 18:51:40 +09:00

36 lines
695 B
Go

package client
import (
"context"
"strings"
"github.com/natefinch/npipe"
"repositories.action2quare.com/ayo/gocommon/logger"
)
func (r *pipeListener) listen(ctx context.Context) {
pipename := r.config.MetricPipeName
if !strings.HasPrefix(pipename, `\\.\pipe\`) {
pipename = `\\.\pipe\` + pipename
}
listener, err := npipe.Listen(pipename)
if err != nil {
logger.Println("metric pipe npipe.Listen failed :", err)
return
}
go func() {
<-ctx.Done()
logger.Println("listener close")
listener.Close()
}()
for {
if conn, err := listener.Accept(); err == nil {
go r.startReader(conn)
} else {
logger.Println("metric pipe listener.Accept failed :", err)
}
}
}