package protocol

func (p *Package) AddToBuffer(data []byte) {
	p.buffer = append(p.buffer, data...)
}

func (p *Package) Read() bool {
	var l int32

	if len(p.buffer) < 4 {
		return false
	}

	// Read the length of the message
	l = int32(p.buffer[0]) | int32(p.buffer[1])<<8 | int32(p.buffer[2])<<16 | int32(p.buffer[3])<<24

	if len(p.buffer) < int(l)+4 {
		return false
	}

	p.Message = string(p.buffer[4 : l+4])
	p.buffer = p.buffer[l+4:]

	return true
}

func (p *Package) Pack() []byte {
	var l = int32(len([]byte(p.Message)))

	var b = []byte{
		byte(l),
		byte(l >> 8),
		byte(l >> 16),
		byte(l >> 24),
	}

	return append(b, []byte(p.Message)...)
}