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) } } }