New service, work in progress
This commit is contained in:
parent
3ceb2257e5
commit
ae2120eb96
15 changed files with 852 additions and 18 deletions
122
go/pkg/ztnode/errors.go
Normal file
122
go/pkg/ztnode/errors.go
Normal file
|
@ -0,0 +1,122 @@
|
|||
/*
|
||||
* Copyright (c)2019 ZeroTier, Inc.
|
||||
*
|
||||
* Use of this software is governed by the Business Source License included
|
||||
* in the LICENSE.TXT file in the project's root directory.
|
||||
*
|
||||
* Change Date: 2023-01-01
|
||||
*
|
||||
* On the date above, in accordance with the Business Source License, use
|
||||
* of this software will be governed by version 2.0 of the Apache License.
|
||||
*/
|
||||
/****/
|
||||
|
||||
package ztnode
|
||||
|
||||
/*
|
||||
|
||||
// errTypeName returns the type name of an error minus any leading * character.
|
||||
func errTypeName(err error) string {
|
||||
if err == nil {
|
||||
return ""
|
||||
}
|
||||
et := reflect.TypeOf(err)
|
||||
if et.Kind() == reflect.Ptr {
|
||||
return et.Elem().Name()
|
||||
}
|
||||
return et.Name()
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Err indicates a general LF error such as an invalid parameter or state.
|
||||
type Err string
|
||||
|
||||
func (e Err) Error() string { return (string)(e) }
|
||||
|
||||
// General errors
|
||||
const (
|
||||
ErrInvalidPublicKey Err = "invalid public key"
|
||||
ErrInvalidPrivateKey Err = "invalid private key"
|
||||
ErrInvalidParameter Err = "invalid parameter"
|
||||
ErrInvalidObject Err = "invalid object"
|
||||
ErrUnsupportedType Err = "unsupported type"
|
||||
ErrUnsupportedCurve Err = "unsupported ECC curve (for this purpose)"
|
||||
ErrOutOfRange Err = "parameter out of range"
|
||||
ErrWharrgarblFailed Err = "Wharrgarbl proof of work algorithm failed (out of memory?)"
|
||||
ErrIO Err = "I/O error"
|
||||
ErrIncorrectKey Err = "incorrect key"
|
||||
ErrAlreadyConnected Err = "already connected"
|
||||
ErrRecordNotFound Err = "record not found"
|
||||
ErrRecordIsNewer Err = "record is newer than timestamp"
|
||||
ErrPulseSpanExeceeded Err = "pulse is more than one year after record"
|
||||
ErrDuplicateRecord Err = "duplicate record"
|
||||
ErrPrivateKeyRequired Err = "private key required"
|
||||
ErrInvalidMessageSize Err = "message size invalid"
|
||||
ErrQueryRequiresSelectors Err = "query requires at least one selector"
|
||||
ErrQueryInvalidSortOrder Err = "invalid sort order value"
|
||||
ErrAlreadyMounted Err = "mount point already mounted"
|
||||
)
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ErrRecord indicates an error related to an invalid record or a record failing a check.
|
||||
type ErrRecord string
|
||||
|
||||
func (e ErrRecord) Error() string { return (string)(e) }
|
||||
|
||||
// Errs indicating that a record is invalid
|
||||
const (
|
||||
ErrRecordInvalid ErrRecord = "record invalid"
|
||||
ErrRecordOwnerSignatureCheckFailed ErrRecord = "owner signature check failed"
|
||||
ErrRecordInsufficientWork ErrRecord = "insufficient work to pay for this record"
|
||||
ErrRecordNotApproved ErrRecord = "record not currently approved (via proof of work and/or certificates)"
|
||||
ErrRecordInsufficientLinks ErrRecord = "insufficient links"
|
||||
ErrRecordTooManyLinks ErrRecord = "too many links"
|
||||
ErrRecordInvalidLinks ErrRecord = "links must be sorted and unique"
|
||||
ErrRecordTooManySelectors ErrRecord = "too many selectors"
|
||||
ErrRecordUnsupportedAlgorithm ErrRecord = "unsupported algorithm or type"
|
||||
ErrRecordTooLarge ErrRecord = "record too large"
|
||||
ErrRecordValueTooLarge ErrRecord = "record value too large"
|
||||
ErrRecordViolatesSpecialRelativity ErrRecord = "record timestamp too far in the future"
|
||||
ErrRecordTooOld ErrRecord = "record older than network timestamp floor"
|
||||
ErrRecordCertificateInvalid ErrRecord = "certificate invalid"
|
||||
ErrRecordCertificateRequired ErrRecord = "certificate required"
|
||||
ErrRecordProhibited ErrRecord = "record administratively prohibited"
|
||||
)
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ErrDatabase contains information about a database related problem.
|
||||
type ErrDatabase struct {
|
||||
// ErrCode is the error code returned by the C database module.
|
||||
ErrCode int
|
||||
|
||||
// ErrMessage is an error message supplied by the C code or by Go (optional)
|
||||
ErrMessage string
|
||||
}
|
||||
|
||||
func (e ErrDatabase) Error() string {
|
||||
return fmt.Sprintf("database error: %d (%s)", e.ErrCode, e.ErrMessage)
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ErrAPI (response) indicates an error and is returned with non-200 responses.
|
||||
type ErrAPI struct {
|
||||
Code int `` // HTTP response code
|
||||
Message string `json:",omitempty"` // Message indicating the reason for the error
|
||||
ErrTypeName string `json:",omitempty"` // Name of LF native error or empty if HTTP or transport error
|
||||
}
|
||||
|
||||
// Error implements the error interface, making APIError an 'error' in the Go sense.
|
||||
func (e ErrAPI) Error() string {
|
||||
if len(e.ErrTypeName) > 0 {
|
||||
return fmt.Sprintf("%d:%s:%s", e.Code, e.ErrTypeName, e.Message)
|
||||
}
|
||||
return fmt.Sprintf("%d:%s", e.Code, e.Message)
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
*/
|
Loading…
Add table
Add a link
Reference in a new issue