Skip to content
Branch: master
Find file Copy path
Find file Copy path
2 contributors

Users who have contributed to this file

@mediocregopher @nussjustin
43 lines (36 sloc) 1.21 KB
// Package resp is an umbrella package which covers both the old RESP protocol
// (resp2) and the new one (resp3), allowing clients to choose which one they
// care to use
package resp
import (
// Marshaler is the interface implemented by types that can marshal themselves
// into valid RESP.
type Marshaler interface {
MarshalRESP(io.Writer) error
// Unmarshaler is the interface implemented by types that can unmarshal a RESP
// description of themselves. UnmarshalRESP should _always_ fully consume a RESP
// message off the reader, unless there is an error returned from the reader
// itself.
// Note that, unlike Marshaler, Unmarshaler _must_ take in a *bufio.Reader.
type Unmarshaler interface {
UnmarshalRESP(*bufio.Reader) error
// ErrDiscarded is used to wrap an error encountered while unmarshaling a
// message. If an error was encountered during unmarshaling but the rest of the
// message was successfully discarded off of the wire, then the error can be
// wrapped in this type.
type ErrDiscarded struct {
Err error
func (ed ErrDiscarded) Error() string {
return ed.Err.Error()
// Unwrap implements the errors.Wrapper interface.
func (ed ErrDiscarded) Unwrap() error {
return ed.Err
You can’t perform that action at this time.