package payload

import "io"

// Payload is anything that can be binary encoded/decoded.
type Payload interface {
	EncodeBinary(io.Writer) error
	DecodeBinary(io.Reader) error
}

// NullPayload is a dummy payload with no fields.
type NullPayload struct {
}

// NewNullPayload returns zero-sized stub payload.
func NewNullPayload() *NullPayload {
	return &NullPayload{}
}

// DecodeBinary implements the Payload interface.
func (p *NullPayload) DecodeBinary(r io.Reader) error {
	return nil
}

// EncodeBinary implements the Payload interface.
func (p *NullPayload) EncodeBinary(r io.Writer) error {
	return nil
}