github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/ipc/error.go (about)

     1  package ipc
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/ActiveState/cli/internal/errs"
     7  	"github.com/ActiveState/cli/internal/ipc/internal/flisten"
     8  )
     9  
    10  var (
    11  	// expose internal errors for outside inspection
    12  	ErrInUse    = flisten.ErrInUse
    13  	ErrConnLost = flisten.ErrConnLost
    14  )
    15  
    16  type ServerDownError struct {
    17  	err error
    18  }
    19  
    20  func NewServerDownError(err error) *ServerDownError {
    21  	return &ServerDownError{
    22  		err: err,
    23  	}
    24  }
    25  
    26  func (e *ServerDownError) Error() string {
    27  	return fmt.Sprintf("ipc server down: %s", e.err)
    28  }
    29  
    30  func (e *ServerDownError) Unwrap() error {
    31  	return e.err
    32  }
    33  
    34  func asServerDownError(err error) error {
    35  	if errs.IsAny(err, flisten.ErrFileNotExist, flisten.ErrConnRefused) {
    36  		return NewServerDownError(err)
    37  	}
    38  	return err
    39  }