IsReady function implemented

This commit is contained in:
milarin 2024-01-10 22:18:11 +01:00
parent 82652060a7
commit fa846337a3

View File

@ -5,6 +5,7 @@ import (
"encoding/json"
"errors"
"net"
"time"
"git.milar.in/milarin/channel"
)
@ -27,6 +28,34 @@ type Event[T any] struct {
Reason string `json:"reason"`
}
func IsReady(ctx context.Context, socket string) <-chan bool {
out := make(chan bool, 1)
go func() {
defer close(out)
ticker := time.NewTicker(100 * time.Millisecond)
defer ticker.Stop()
for {
select {
case <-ticker.C:
conn, err := net.Dial("unix", socket)
if err == nil {
defer conn.Close()
out <- true
return
}
case <-ctx.Done():
out <- false
return
}
}
}()
return out
}
func SendCommand[T any](socket string, cmd *Command) (*Response[T], error) {
conn, err := net.Dial("unix", socket)
if err != nil {