github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/errors/p2perrcode.go (about)

     1  package errors
     2  
     3  import (
     4  	"fmt"
     5  )
     6  
     7  type ErrCoder interface {
     8  	GetErrCode() ErrCode
     9  }
    10  
    11  type ErrCode int32
    12  
    13  const (
    14  	ErrNoCode               ErrCode = -2
    15  	ErrNoError              ErrCode = 0
    16  	ErrUnknown              ErrCode = -1
    17  	ErrDuplicatedTx         ErrCode = 45002
    18  	ErrDuplicateInput       ErrCode = 45003
    19  	ErrAssetPrecision       ErrCode = 45004
    20  	ErrTransactionBalance   ErrCode = 45005
    21  	ErrAttributeProgram     ErrCode = 45006
    22  	ErrTransactionContracts ErrCode = 45007
    23  	ErrTransactionPayload   ErrCode = 45008
    24  	ErrDoubleSpend          ErrCode = 45009
    25  	ErrTxHashDuplicate      ErrCode = 45010
    26  	ErrStateUpdaterVaild    ErrCode = 45011
    27  	ErrSummaryAsset         ErrCode = 45012
    28  	ErrXmitFail             ErrCode = 45013
    29  	ErrNoAccount            ErrCode = 45014
    30  	ErrRetryExhausted       ErrCode = 45015
    31  	ErrTxPoolFull           ErrCode = 45016
    32  	ErrNetPackFail          ErrCode = 45017
    33  	ErrNetUnPackFail        ErrCode = 45018
    34  	ErrNetVerifyFail        ErrCode = 45019
    35  	ErrGasPrice             ErrCode = 45020
    36  	ErrVerifySignature      ErrCode = 45021
    37  )
    38  
    39  func (err ErrCode) Error() string {
    40  	switch err {
    41  	case ErrNoCode:
    42  		return "no error code"
    43  	case ErrNoError:
    44  		return "not an error"
    45  	case ErrUnknown:
    46  		return "unknown error"
    47  	case ErrDuplicatedTx:
    48  		return "duplicated transaction detected"
    49  	case ErrDuplicateInput:
    50  		return "duplicated transaction input detected"
    51  	case ErrAssetPrecision:
    52  		return "invalid asset precision"
    53  	case ErrTransactionBalance:
    54  		return "transaction balance unmatched"
    55  	case ErrAttributeProgram:
    56  		return "attribute program error"
    57  	case ErrTransactionContracts:
    58  		return "invalid transaction contract"
    59  	case ErrTransactionPayload:
    60  		return "invalid transaction payload"
    61  	case ErrDoubleSpend:
    62  		return "double spent transaction detected"
    63  	case ErrTxHashDuplicate:
    64  		return "duplicated transaction hash detected"
    65  	case ErrStateUpdaterVaild:
    66  		return "invalid state updater"
    67  	case ErrSummaryAsset:
    68  		return "invalid summary asset"
    69  	case ErrXmitFail:
    70  		return "transmit error"
    71  	case ErrRetryExhausted:
    72  		return "retry exhausted"
    73  	case ErrTxPoolFull:
    74  		return "tx pool full"
    75  	case ErrNetPackFail:
    76  		return "net msg pack fail"
    77  	case ErrNetUnPackFail:
    78  		return "net msg unpack fail"
    79  	case ErrNetVerifyFail:
    80  		return "net msg verify fail"
    81  	case ErrGasPrice:
    82  		return "invalid gas price"
    83  	case ErrVerifySignature:
    84  		return "transaction verify signature fail"
    85  
    86  	}
    87  
    88  	return fmt.Sprintf("Unknown error? Error code = %d", err)
    89  }
    90  
    91  func ErrerCode(err error) ErrCode {
    92  	if err, ok := err.(ErrCoder); ok {
    93  		return err.GetErrCode()
    94  	}
    95  	return ErrUnknown
    96  }