| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- package errors
- import (
- "fmt"
- )
- func HasCode(err error, code int) bool {
- if errWithCode, ok := err.(ErrorWithCode); ok {
- return errWithCode.Code() == code
- }
- return false
- }
- type ErrorWithCode interface {
- error
- Code() int
- }
- type ErrorCode int
- func (code ErrorCode) Code() int {
- return int(code)
- }
- func (code ErrorCode) Prefix() string {
- return fmt.Sprintf("[Error 0x%04X] ", code.Code())
- }
- type AuthenticationError struct {
- ErrorCode
- AuthDetail interface{}
- }
- func NewAuthenticationError(detail interface{}) AuthenticationError {
- return AuthenticationError{
- ErrorCode: 1,
- AuthDetail: detail,
- }
- }
- func (err AuthenticationError) Error() string {
- return fmt.Sprintf("%sInvalid auth %v", err.Prefix(), err.AuthDetail)
- }
- type ProtocolVersionError struct {
- ErrorCode
- Version int
- }
- func NewProtocolVersionError(version int) ProtocolVersionError {
- return ProtocolVersionError{
- ErrorCode: 2,
- Version: version,
- }
- }
- func (err ProtocolVersionError) Error() string {
- return fmt.Sprintf("%sInvalid version %d", err.Prefix(), err.Version)
- }
- type CorruptedPacketError struct {
- ErrorCode
- }
- var corruptedPacketErrorInstance = CorruptedPacketError{ErrorCode: 3}
- func NewCorruptedPacketError() CorruptedPacketError {
- return corruptedPacketErrorInstance
- }
- func (err CorruptedPacketError) Error() string {
- return err.Prefix() + "Corrupted packet."
- }
- type IPFormatError struct {
- ErrorCode
- IP []byte
- }
- func NewIPFormatError(ip []byte) IPFormatError {
- return IPFormatError{
- ErrorCode: 4,
- IP: ip,
- }
- }
- func (err IPFormatError) Error() string {
- return fmt.Sprintf("%sInvalid IP %v", err.Prefix(), err.IP)
- }
- type ConfigurationError struct {
- ErrorCode
- }
- var configurationErrorInstance = ConfigurationError{ErrorCode: 5}
- func NewConfigurationError() ConfigurationError {
- return configurationErrorInstance
- }
- func (r ConfigurationError) Error() string {
- return r.Prefix() + "Invalid configuration."
- }
- type InvalidOperationError struct {
- ErrorCode
- Operation string
- }
- func NewInvalidOperationError(operation string) InvalidOperationError {
- return InvalidOperationError{
- ErrorCode: 6,
- Operation: operation,
- }
- }
- func (r InvalidOperationError) Error() string {
- return r.Prefix() + "Invalid operation: " + r.Operation
- }
- type BadConfigurationError struct {
- ErrorCode
- }
- var badConfigurationErrorInstance = BadConfigurationError{ErrorCode: 6}
- func NewBadConfigurationError() BadConfigurationError {
- return badConfigurationErrorInstance
- }
- func (r BadConfigurationError) Error() string {
- return r.Prefix() + "Bad configuration."
- }
|