// fillPacket fill the send packet and write the packet to buffer. func (parse *BinaryPorotolParse) fillPacket(p *packet, conn *common.Conn) (err error) { var header []byte = make([]byte, headerLen) var i int // fill request header header[i] = p.magic i += magicLen header[i] = p.opcode i += opcodeLen binary.BigEndian.PutUint16(header[i:i+keyLen], p.keyLength) i += keyLen header[i] = p.extrasLength i += extrasLen header[i] = p.dataType i += dataTypeLen binary.BigEndian.PutUint16(header[i:i+statusLen], p.statusOrVbucket) i += statusLen binary.BigEndian.PutUint32(header[i:i+totalBodyLen], p.totalBodyLength) i += totalBodyLen binary.BigEndian.PutUint32(header[i:i+opaqueLen], p.opaque) i += opaqueLen binary.BigEndian.PutUint64(header[i:i+casLen], p.cas) // write content to buffer _, err = conn.WriteToBuffer(header) _, err = conn.WriteToBuffer(p.extras) _, err = conn.WriteToBuffer(p.key) _, err = conn.WriteToBuffer(p.value) return }