github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/cmd/state-exec/comm.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"net"
     6  
     7  	"github.com/ActiveState/cli/internal/svcctl/svcmsg"
     8  )
     9  
    10  const (
    11  	network  = "unix"
    12  	msgWidth = 1024
    13  )
    14  
    15  func sendMsgToService(sockPath string, msg svcmsg.Messager) error {
    16  	conn, err := net.Dial(network, sockPath)
    17  	if err != nil {
    18  		return fmt.Errorf("dial failed: %w", err)
    19  	}
    20  	defer conn.Close()
    21  
    22  	_, err = conn.Write([]byte(msg.SvcMsg()))
    23  	if err != nil {
    24  		return fmt.Errorf("write to connection failed: %w", err)
    25  	}
    26  
    27  	buf := make([]byte, msgWidth)
    28  	_, err = conn.Read(buf)
    29  	if err != nil {
    30  		return fmt.Errorf("read from connection failed (buffer: %q): %w", string(buf), err)
    31  	}
    32  
    33  	return nil
    34  }