gitee.com/h79/goutils@v1.22.10/rpc/error.go (about)

     1  package rpc
     2  
     3  import (
     4  	"gitee.com/h79/goutils/common/result"
     5  	"google.golang.org/grpc/codes"
     6  	"google.golang.org/grpc/status"
     7  )
     8  
     9  func WithStatus(err error) *status.Status {
    10  	if st, ok := status.FromError(err); ok {
    11  		return st
    12  	}
    13  	return nil
    14  }
    15  
    16  func IsDeadlineExceeded(s *status.Status) bool {
    17  	return s != nil && s.Code() == codes.DeadlineExceeded
    18  }
    19  
    20  func IsUnimplemented(s *status.Status) bool {
    21  	return s != nil && s.Code() == codes.Unimplemented
    22  }
    23  
    24  func IsClosed(s *status.Status) bool {
    25  	return s != nil && s.Code() == codes.Canceled
    26  }
    27  
    28  func IsNeedAlarm(s *status.Status) bool {
    29  	return s != nil && (s.Code() == codes.DeadlineExceeded || s.Code() == codes.Unimplemented)
    30  }
    31  
    32  func ErrIsDeadlineExceeded(err error) bool {
    33  	return result.ErrCode(result.ErrDeadlineExceeded).Is(err)
    34  }