const messageHeaderLength …
const messageLengthMax …
type messageType …
const messageTypeRequest …
const messageTypeResponse …
const messageTypeData …
func (mt messageType) String() string { … }
const flagRemoteClosed …
const flagRemoteOpen …
const flagNoData …
type messageHeader …
func readMessageHeader(p []byte, r io.Reader) (messageHeader, error) { … }
func writeMessageHeader(w io.Writer, p []byte, mh messageHeader) error { … }
var buffers …
type channel …
func newChannel(conn net.Conn) *channel { … }
func (ch *channel) recv() (messageHeader, []byte, error) { … }
func (ch *channel) send(streamID uint32, t messageType, flags uint8, p []byte) error { … }
func (ch *channel) getmbuf(size int) []byte { … }
func (ch *channel) putmbuf(p []byte) { … }