ec6ebb3916
This commit adds a new MessageError type that is intended to allow the caller to differentiate between general io errors and and errors that resulted from malformed messages.
34 lines
1.1 KiB
Go
34 lines
1.1 KiB
Go
// Copyright (c) 2013 Conformal Systems LLC.
|
|
// Use of this source code is governed by an ISC
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package btcwire
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
// MessageError describes an issue with a message.
|
|
// An example of some potential issues are messages from the wrong bitcoin
|
|
// network, invalid commands, mismatched checksums, and exceeding max payloads.
|
|
//
|
|
// This provides a mechanism for the caller to type assert the error to
|
|
// differentiate between general io errors such as io.EOF and issues that
|
|
// resulted from malformed messages.
|
|
type MessageError struct {
|
|
Func string // Function name
|
|
Description string // Human readable description of the issue
|
|
}
|
|
|
|
// Error satisfies the error interface and prints human-readable errors.
|
|
func (e *MessageError) Error() string {
|
|
if e.Func != "" {
|
|
return fmt.Sprintf("%v: %v", e.Func, e.Description)
|
|
}
|
|
return e.Description
|
|
}
|
|
|
|
// messageError creates an error for the given function and description.
|
|
func messageError(f string, desc string) *MessageError {
|
|
return &MessageError{Func: f, Description: desc}
|
|
}
|