watchtower/wtwire/error: add generic error message
This commit is contained in:
parent
d171df5184
commit
999466c860
62
watchtower/wtwire/error.go
Normal file
62
watchtower/wtwire/error.go
Normal file
@ -0,0 +1,62 @@
|
||||
package wtwire
|
||||
|
||||
import "io"
|
||||
|
||||
// Error is a generic error message that can be sent to a client if a request
|
||||
// fails outside of prescribed protocol errors. Typically this would be followed
|
||||
// by the server disconnecting the client, and so can be useful to transfering
|
||||
// the exact reason.
|
||||
type Error struct {
|
||||
// Code specifies the error code encountered by the server.
|
||||
Code ErrorCode
|
||||
|
||||
// Data encodes a payload whose contents can be interpreted by the
|
||||
// client in response to the error code.
|
||||
Data []byte
|
||||
}
|
||||
|
||||
// NewError returns an freshly-initialized Error message.
|
||||
func NewError() *Error {
|
||||
return &Error{}
|
||||
}
|
||||
|
||||
// A compile time check to ensure Error implements the wtwire.Message interface.
|
||||
var _ Message = (*Error)(nil)
|
||||
|
||||
// Decode deserializes a serialized Error message stored in the passed io.Reader
|
||||
// observing the specified protocol version.
|
||||
//
|
||||
// This is part of the wtwire.Message interface.
|
||||
func (e *Error) Decode(r io.Reader, pver uint32) error {
|
||||
return ReadElements(r,
|
||||
&e.Code,
|
||||
&e.Data,
|
||||
)
|
||||
}
|
||||
|
||||
// Encode serializes the target Error into the passed io.Writer observing the
|
||||
// protocol version specified.
|
||||
//
|
||||
// This is part of the wtwire.Message interface.
|
||||
func (e *Error) Encode(w io.Writer, prver uint32) error {
|
||||
return WriteElements(w,
|
||||
e.Code,
|
||||
e.Data,
|
||||
)
|
||||
}
|
||||
|
||||
// MsgType returns the integer uniquely identifying this message type on the
|
||||
// wire.
|
||||
//
|
||||
// This is part of the wtwire.Message interface.
|
||||
func (e *Error) MsgType() MessageType {
|
||||
return MsgError
|
||||
}
|
||||
|
||||
// MaxPayloadLength returns the maximum allowed payload size for a Error
|
||||
// complete message observing the specified protocol version.
|
||||
//
|
||||
// This is part of the wtwire.Message interface.
|
||||
func (e *Error) MaxPayloadLength(uint32) uint32 {
|
||||
return MaxMessagePayload
|
||||
}
|
Loading…
Reference in New Issue
Block a user