AttributeHeader
char attributeBuffer[sizeof(AttributeHeader) + kMaxAttributeLength];
if ((size_t)bytesRead < sizeof(AttributeHeader)) {
bytesRead -= sizeof(AttributeHeader) + pos;
memcpy(buffer, attributeBuffer + sizeof(AttributeHeader) + pos,
char attributeBuffer[sizeof(AttributeHeader) + kMaxAttributeLength];
AttributeHeader* header = (AttributeHeader*)attributeBuffer;
memset(attributeBuffer + sizeof(AttributeHeader), 0, pos);
memcpy(attributeBuffer + sizeof(AttributeHeader) + pos, buffer,
ssize_t toWrite = sizeof(AttributeHeader) + pos + writeBytes;
char attributeBuffer[sizeof(AttributeHeader) + kMaxAttributeLength];
ssize_t bytesRead = sizeof(AttributeHeader) + kMaxAttributeLength;
if ((size_t)bytesRead < sizeof(AttributeHeader)) {
attrInfo->size = bytesRead - sizeof(AttributeHeader);
attrInfo->type = ((AttributeHeader*)attributeBuffer)->type;