package msgio

import (
	
	
)

// NBO is NetworkByteOrder
var NBO = binary.BigEndian

// WriteLen writes a length to the given writer.
func ( io.Writer,  int) error {
	 := uint32()
	return binary.Write(, NBO, &)
}

// ReadLen reads a length from the given reader.
// if buf is non-nil, it reuses the buffer. Ex:
//
//	l, err := ReadLen(r, nil)
//	_, err := ReadLen(r, buf)
func ( io.Reader,  []byte) (int, error) {
	if len() < 4 {
		 = make([]byte, 4)
	}
	 = [:4]

	if ,  := io.ReadFull(, );  != nil {
		return 0, 
	}

	 := int(NBO.Uint32())
	return , nil
}