package protocol

import (
	"io"
)

type RequestEncoder interface {
	EncodeRequestHeader(*RequestHeader, io.Writer)
	EncodeRequestBody(io.Writer) io.Writer
}

type RequestDecoder interface {
	DecodeRequestHeader(io.Reader) (*RequestHeader, error)
	DecodeRequestBody(io.Reader) io.Reader
}

type ResponseEncoder interface {
	EncodeResponseHeader(*ResponseHeader, io.Writer)
	EncodeResponseBody(io.Writer) io.Writer
}

type ResponseDecoder interface {
	DecodeResponseHeader(io.Reader) (*ResponseHeader, error)
	DecodeResponseBody(io.Reader) io.Reader
}