github.com/timstclair/heapster@v0.20.0-alpha1/Godeps/_workspace/src/google.golang.org/appengine/errors.go (about) 1 // Copyright 2011 Google Inc. All rights reserved. 2 // Use of this source code is governed by the Apache 2.0 3 // license that can be found in the LICENSE file. 4 5 // This file provides error functions for common API failure modes. 6 7 package appengine 8 9 import ( 10 "fmt" 11 12 "google.golang.org/appengine/internal" 13 ) 14 15 // IsOverQuota reports whether err represents an API call failure 16 // due to insufficient available quota. 17 func IsOverQuota(err error) bool { 18 callErr, ok := err.(*internal.CallError) 19 return ok && callErr.Code == 4 20 } 21 22 // MultiError is returned by batch operations when there are errors with 23 // particular elements. Errors will be in a one-to-one correspondence with 24 // the input elements; successful elements will have a nil entry. 25 type MultiError []error 26 27 func (m MultiError) Error() string { 28 s, n := "", 0 29 for _, e := range m { 30 if e != nil { 31 if n == 0 { 32 s = e.Error() 33 } 34 n++ 35 } 36 } 37 switch n { 38 case 0: 39 return "(0 errors)" 40 case 1: 41 return s 42 case 2: 43 return s + " (and 1 other error)" 44 } 45 return fmt.Sprintf("%s (and %d other errors)", s, n-1) 46 }