github.com/docker/docker@v299999999.0.0-20200612211812-aaf470eca7b5+incompatible/errdefs/helpers.go (about)

     1  package errdefs // import "github.com/docker/docker/errdefs"
     2  
     3  import "context"
     4  
     5  type errNotFound struct{ error }
     6  
     7  func (errNotFound) NotFound() {}
     8  
     9  func (e errNotFound) Cause() error {
    10  	return e.error
    11  }
    12  
    13  // NotFound is a helper to create an error of the class with the same name from any error type
    14  func NotFound(err error) error {
    15  	if err == nil || IsNotFound(err) {
    16  		return err
    17  	}
    18  	return errNotFound{err}
    19  }
    20  
    21  type errInvalidParameter struct{ error }
    22  
    23  func (errInvalidParameter) InvalidParameter() {}
    24  
    25  func (e errInvalidParameter) Cause() error {
    26  	return e.error
    27  }
    28  
    29  // InvalidParameter is a helper to create an error of the class with the same name from any error type
    30  func InvalidParameter(err error) error {
    31  	if err == nil || IsInvalidParameter(err) {
    32  		return err
    33  	}
    34  	return errInvalidParameter{err}
    35  }
    36  
    37  type errConflict struct{ error }
    38  
    39  func (errConflict) Conflict() {}
    40  
    41  func (e errConflict) Cause() error {
    42  	return e.error
    43  }
    44  
    45  // Conflict is a helper to create an error of the class with the same name from any error type
    46  func Conflict(err error) error {
    47  	if err == nil || IsConflict(err) {
    48  		return err
    49  	}
    50  	return errConflict{err}
    51  }
    52  
    53  type errUnauthorized struct{ error }
    54  
    55  func (errUnauthorized) Unauthorized() {}
    56  
    57  func (e errUnauthorized) Cause() error {
    58  	return e.error
    59  }
    60  
    61  // Unauthorized is a helper to create an error of the class with the same name from any error type
    62  func Unauthorized(err error) error {
    63  	if err == nil || IsUnauthorized(err) {
    64  		return err
    65  	}
    66  	return errUnauthorized{err}
    67  }
    68  
    69  type errUnavailable struct{ error }
    70  
    71  func (errUnavailable) Unavailable() {}
    72  
    73  func (e errUnavailable) Cause() error {
    74  	return e.error
    75  }
    76  
    77  // Unavailable is a helper to create an error of the class with the same name from any error type
    78  func Unavailable(err error) error {
    79  	if err == nil || IsUnavailable(err) {
    80  		return err
    81  	}
    82  	return errUnavailable{err}
    83  }
    84  
    85  type errForbidden struct{ error }
    86  
    87  func (errForbidden) Forbidden() {}
    88  
    89  func (e errForbidden) Cause() error {
    90  	return e.error
    91  }
    92  
    93  // Forbidden is a helper to create an error of the class with the same name from any error type
    94  func Forbidden(err error) error {
    95  	if err == nil || IsForbidden(err) {
    96  		return err
    97  	}
    98  	return errForbidden{err}
    99  }
   100  
   101  type errSystem struct{ error }
   102  
   103  func (errSystem) System() {}
   104  
   105  func (e errSystem) Cause() error {
   106  	return e.error
   107  }
   108  
   109  // System is a helper to create an error of the class with the same name from any error type
   110  func System(err error) error {
   111  	if err == nil || IsSystem(err) {
   112  		return err
   113  	}
   114  	return errSystem{err}
   115  }
   116  
   117  type errNotModified struct{ error }
   118  
   119  func (errNotModified) NotModified() {}
   120  
   121  func (e errNotModified) Cause() error {
   122  	return e.error
   123  }
   124  
   125  // NotModified is a helper to create an error of the class with the same name from any error type
   126  func NotModified(err error) error {
   127  	if err == nil || IsNotModified(err) {
   128  		return err
   129  	}
   130  	return errNotModified{err}
   131  }
   132  
   133  type errNotImplemented struct{ error }
   134  
   135  func (errNotImplemented) NotImplemented() {}
   136  
   137  func (e errNotImplemented) Cause() error {
   138  	return e.error
   139  }
   140  
   141  // NotImplemented is a helper to create an error of the class with the same name from any error type
   142  func NotImplemented(err error) error {
   143  	if err == nil || IsNotImplemented(err) {
   144  		return err
   145  	}
   146  	return errNotImplemented{err}
   147  }
   148  
   149  type errUnknown struct{ error }
   150  
   151  func (errUnknown) Unknown() {}
   152  
   153  func (e errUnknown) Cause() error {
   154  	return e.error
   155  }
   156  
   157  // Unknown is a helper to create an error of the class with the same name from any error type
   158  func Unknown(err error) error {
   159  	if err == nil || IsUnknown(err) {
   160  		return err
   161  	}
   162  	return errUnknown{err}
   163  }
   164  
   165  type errCancelled struct{ error }
   166  
   167  func (errCancelled) Cancelled() {}
   168  
   169  func (e errCancelled) Cause() error {
   170  	return e.error
   171  }
   172  
   173  // Cancelled is a helper to create an error of the class with the same name from any error type
   174  func Cancelled(err error) error {
   175  	if err == nil || IsCancelled(err) {
   176  		return err
   177  	}
   178  	return errCancelled{err}
   179  }
   180  
   181  type errDeadline struct{ error }
   182  
   183  func (errDeadline) DeadlineExceeded() {}
   184  
   185  func (e errDeadline) Cause() error {
   186  	return e.error
   187  }
   188  
   189  // Deadline is a helper to create an error of the class with the same name from any error type
   190  func Deadline(err error) error {
   191  	if err == nil || IsDeadline(err) {
   192  		return err
   193  	}
   194  	return errDeadline{err}
   195  }
   196  
   197  type errDataLoss struct{ error }
   198  
   199  func (errDataLoss) DataLoss() {}
   200  
   201  func (e errDataLoss) Cause() error {
   202  	return e.error
   203  }
   204  
   205  // DataLoss is a helper to create an error of the class with the same name from any error type
   206  func DataLoss(err error) error {
   207  	if err == nil || IsDataLoss(err) {
   208  		return err
   209  	}
   210  	return errDataLoss{err}
   211  }
   212  
   213  // FromContext returns the error class from the passed in context
   214  func FromContext(ctx context.Context) error {
   215  	e := ctx.Err()
   216  	if e == nil {
   217  		return nil
   218  	}
   219  
   220  	if e == context.Canceled {
   221  		return Cancelled(e)
   222  	}
   223  	if e == context.DeadlineExceeded {
   224  		return Deadline(e)
   225  	}
   226  	return Unknown(e)
   227  }