XnStatus PlayerNode::HandleRecord(Record &record, XnBool bHandlePayload) { XN_ASSERT(record.IsHeaderValid()); switch (record.GetType()) { case RECORD_NODE_ADDED: return HandleNodeAddedRecord(record); case RECORD_INT_PROPERTY: return HandleIntPropRecord(record); case RECORD_REAL_PROPERTY: return HandleRealPropRecord(record); case RECORD_STRING_PROPERTY: return HandleStringPropRecord(record); case RECORD_GENERAL_PROPERTY: return HandleGeneralPropRecord(record); case RECORD_NODE_REMOVED: return HandleNodeRemovedRecord(record); case RECORD_NODE_STATE_READY: return HandleNodeStateReadyRecord(record); case RECORD_NODE_DATA_BEGIN: return HandleNodeDataBeginRecord(record); case RECORD_NEW_DATA: return HandleNewDataRecord(record, bHandlePayload); case RECORD_END: return HandleEndRecord(record); // BC stuff case RECORD_NODE_ADDED_1_0_0_4: return HandleNodeAdded_1_0_0_4_Record(record); default: XN_ASSERT(FALSE); XN_LOG_ERROR_RETURN(XN_STATUS_CORRUPT_FILE, XN_MASK_OPEN_NI, "Unrecognized record type: %u", record.GetType()); } }
XnStatus PlayerNode::ReadRecordHeader(Record &record) { XnUInt32 nBytesRead = 0; XnStatus nRetVal = Read(record.GetData(), Record::HEADER_SIZE, nBytesRead); if (nBytesRead != Record::HEADER_SIZE) { XN_LOG_ERROR_RETURN(XN_STATUS_CORRUPT_FILE, XN_MASK_OPEN_NI, "Incorrect number of bytes read"); } if (!record.IsHeaderValid()) { XN_ASSERT(FALSE); XN_LOG_ERROR_RETURN(XN_STATUS_CORRUPT_FILE, XN_MASK_OPEN_NI, "Invalid record header"); } return XN_STATUS_OK; }