Documentation ¶
Index ¶
- func AddError(e error, errValue FsError) error
- func AddHTTPCode(e error, statusCode int) error
- func Details(e error) string
- func Errno(e error) int
- func ErrorString(e error) string
- func ErrorUpdate(e error, currentVal FsError, changeToVal FsError) error
- func HTTPCode(e error) int
- func Is(e error, theError FsError) bool
- func IsNot(e error, theError FsError) bool
- func IsNotSuccess(e error) bool
- func IsSuccess(e error) bool
- func Location(e error) (file string, line int)
- func NewError(errValue FsError, format string, a ...interface{}) error
- func SourceLine(e error) string
- func Stacktrace(e error) string
- type FsError
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddError ¶
AddError is used to add FS error detail to a Go error.
NOTE: Checks whether the error value has already been set
Note that by default merry will replace the old with the new.
func AddHTTPCode ¶
func Details ¶
Details wraps merry.Details, which returns all error details including stacktrace in a string.
func Errno ¶
Errno extracts errno from the error, if it was previously wrapped. Otherwise a default value is returned.
func ErrorString ¶
func HTTPCode ¶
HTTPCode wraps merry.HTTPCode, which returns the HTTP status code. Default value is 500.
func Is ¶
Check if an error matches a particular FsError
NOTE: Because the value of the underlying errno is used to do this check, one cannot
use this API to distinguish between FsErrors that use the same errno value. IOW, it can't tell the difference between InvalidFileModeError/BadMountIDError/InvalidArgError, since they all use unix.EINVAL as their underlying errno value.
func Location ¶
Location returns the file and line number of the code that generated the error. Returns zero values if e has no stacktrace.
func NewError ¶
NewError creates a new merry/blunder.FsError-annotated error using the given format string and arguments.
func SourceLine ¶
SourceLine returns the string representation of Location's result Returns empty stringif e has no stacktrace.
func Stacktrace ¶
Stacktrace wraps merry.Stacktrace, which returns error stacktrace (if set) in a string.
Types ¶
type FsError ¶
type FsError int
Error constants to be used in the ProxyFS namespace.
There are two groups of constants:
- constants that correspond to linux/POSIX errnos as defined in errno.h
- ProxyFS-specific constants for errors not covered in the errno space
The linux/POSIX-related constants should be used in cases where there is a clear mapping to these errors. Using these constants makes it easier to map errors for use by our JSON RPC functionality.
NOTE: unix.Errno is used here because they are errno constants that exist in Go-land.
This type consists of an unsigned number describing an error condition. It implements the error interface; we need to cast it to an int to get the errno value.
const ( // Errors that map to linux/POSIX errnos as defined in errno.h // NotPermError FsError = FsError(int(unix.EPERM)) // Operation not permitted NotFoundError FsError = FsError(int(unix.ENOENT)) // No such file or directory IOError FsError = FsError(int(unix.EIO)) // I/O error ReadOnlyError FsError = FsError(int(unix.EROFS)) // Read-only file system TooBigError FsError = FsError(int(unix.E2BIG)) // Argument list too long TooManyArgsError FsError = FsError(int(unix.E2BIG)) // Arg list too long BadFileError FsError = FsError(int(unix.EBADF)) // Bad file number TryAgainError FsError = FsError(int(unix.EAGAIN)) // Try again OutOfMemoryError FsError = FsError(int(unix.ENOMEM)) // Out of memory PermDeniedError FsError = FsError(int(unix.EACCES)) // Permission denied BadAddressError FsError = FsError(int(unix.EFAULT)) // Bad address DevBusyError FsError = FsError(int(unix.EBUSY)) // Device or resource busy FileExistsError FsError = FsError(int(unix.EEXIST)) // File exists NoDeviceError FsError = FsError(int(unix.ENODEV)) // No such device NotDirError FsError = FsError(int(unix.ENOTDIR)) // Not a directory IsDirError FsError = FsError(int(unix.EISDIR)) // Is a directory InvalidArgError FsError = FsError(int(unix.EINVAL)) // Invalid argument TableOverflowError FsError = FsError(int(unix.ENFILE)) // File table overflow TooManyOpenFilesError FsError = FsError(int(unix.EMFILE)) // Too many open files FileTooLargeError FsError = FsError(int(unix.EFBIG)) // File too large NoSpaceError FsError = FsError(int(unix.ENOSPC)) // No space left on device BadSeekError FsError = FsError(int(unix.ESPIPE)) // Illegal seek TooManyLinksError FsError = FsError(int(unix.EMLINK)) // Too many links OutOfRangeError FsError = FsError(int(unix.ERANGE)) // Math result not representable NameTooLongError FsError = FsError(int(unix.ENAMETOOLONG)) // File name too long NoLocksError FsError = FsError(int(unix.ENOLCK)) // No record locks available NotImplementedError FsError = FsError(int(unix.ENOSYS)) // Function not implemented NotEmptyError FsError = FsError(int(unix.ENOTEMPTY)) // Directory not empty TooManySymlinksError FsError = FsError(int(unix.ELOOP)) // Too many symbolic links encountered NotSupportedError FsError = FsError(int(unix.ENOTSUP)) // Operation not supported NoDataError FsError = FsError(int(unix.ENODATA)) // No data available TimedOut FsError = FsError(int(unix.ETIMEDOUT)) // Connection Timed Out )
const ( NotActiveError FsError = NotFoundError BadLeaseRequest FsError = InvalidArgError BadMountIDError FsError = InvalidArgError BadMountVolumeError FsError = InvalidArgError NotFileError FsError = IsDirError SegNumNotIntError FsError = IOError SegNotFoundError FsError = IOError SegReadError FsError = IOError InodeFlushError FsError = IOError BtreeDeleteError FsError = IOError BtreePutError FsError = IOError BtreeLenError FsError = IOError FileWriteError FsError = IOError GetMetadataError FsError = IOError NotSymlinkError FsError = InvalidArgError IsSymlinkError FsError = InvalidArgError LinkDirError FsError = NotPermError BadHTTPDeleteError FsError = IOError BadHTTPGetError FsError = IOError BadHTTPHeadError FsError = IOError BadHTTPPutError FsError = IOError InvalidInodeTypeError FsError = InvalidArgError InvalidFileModeError FsError = InvalidArgError InvalidUserIDError FsError = InvalidArgError InvalidGroupIDError FsError = InvalidArgError StreamNotFound FsError = NoDataError AccountNotModifiable FsError = NotPermError OldMetaDataDifferent FsError = TryAgainError )
Errors that map to constants already defined above
const SuccessError FsError = 0
Success error (sounds odd, no? - perhaps this could be renamed "NotAnError"?)