uint32_t MamaRecordedMessageCodec::encodeVectorMsg(char*& buffer, MamaMsgField& mmf) { const MamaMsg** mmpp = NULL; char* orig_buffer = buffer; // Reserve these four bytes for the vector size buffer += 4; MamaMsg* mmp = NULL; mama_size_t count = 0; uint16_t r = 4; uint16_t msg_size = 0; mmf.getVectorMsg(mmpp, count); if(count == 0) { return 0; } uint16_t msg_length = (uint16_t)count; for(mama_size_t i = 0; i < count; i++) { mmp = (MamaMsg*)*mmpp; //printf("Encountering Message: %s\n", mmp->toString()); msg_size += encodeMsg(buffer, mmp); r += msg_size; buffer += msg_size; mmpp++; } // Now we know the total vector size, write it in. memcpy(orig_buffer, &r, 2); memcpy(orig_buffer+2, &msg_length, 2); //printf("Encoded [%d] Vector Message Fields of size [%d]...\n", count, r); return (uint32_t)r; }