36 lines
695 B
Go
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)
|
|
}
|
|
}
|
|
}
|