| 81 | } |
| 82 | |
| 83 | XnStatus RecorderNode::OnNodeAdded(const XnChar* strNodeName, XnProductionNodeType type, XnCodecID compression) |
| 84 | { |
| 85 | XnStatus nRetVal = XN_STATUS_OK; |
| 86 | XnUInt32 nNodeID = ++m_nNumNodes; |
| 87 | |
| 88 | m_nConfigurationID++; |
| 89 | |
| 90 | NodeAddedRecord nodeAddedRecord(m_pRecordBuffer, RECORD_MAX_SIZE, FALSE); |
| 91 | nodeAddedRecord.SetNodeName(strNodeName); |
| 92 | nodeAddedRecord.SetNodeType(type); |
| 93 | nodeAddedRecord.SetCompression(compression); |
| 94 | nodeAddedRecord.SetNodeID(nNodeID); |
| 95 | nRetVal = nodeAddedRecord.Encode(); |
| 96 | if (nRetVal != XN_STATUS_OK) |
| 97 | { |
| 98 | xnLogWarning(XN_MASK_OPEN_NI, "Failed to encode Node Added nodeAddedRecord: %s", xnGetStatusString(nRetVal)); |
| 99 | XN_ASSERT(FALSE); |
| 100 | return nRetVal; |
| 101 | } |
| 102 | |
| 103 | XnUInt64 nNodeAddedPos = TellStream(); |
| 104 | nRetVal = WriteRecordToStream(strNodeName, nodeAddedRecord); |
| 105 | if (nRetVal != XN_STATUS_OK) |
| 106 | { |
| 107 | xnLogWarning(XN_MASK_OPEN_NI, "Failed to write Node Added nodeAddedRecord to file: %s", xnGetStatusString(nRetVal)); |
| 108 | XN_ASSERT(FALSE); |
| 109 | return nRetVal; |
| 110 | } |
| 111 | RecordedNodeInfo recordedNodeInfo; |
| 112 | xn::ProductionNode node; |
| 113 | recordedNodeInfo.nNodeID = nNodeID; |
| 114 | recordedNodeInfo.type = type; |
| 115 | recordedNodeInfo.compression = compression; |
| 116 | recordedNodeInfo.nNodeAddedPos = nNodeAddedPos; |
| 117 | |
| 118 | if (xnIsTypeGenerator(type)) |
| 119 | { |
| 120 | /* Create Codec for node */ |
| 121 | nRetVal = m_context.GetProductionNodeByName(strNodeName, node); |
| 122 | XN_IS_STATUS_OK(nRetVal); |
| 123 | nRetVal = m_context.CreateCodec(compression, node, recordedNodeInfo.codec); |
| 124 | XN_IS_STATUS_OK(nRetVal); |
| 125 | } |
| 126 | |
| 127 | /* Index recorded node info by name in hash */ |
| 128 | nRetVal = m_recordedNodesInfo.Set(strNodeName, recordedNodeInfo); |
| 129 | XN_IS_STATUS_OK(nRetVal); |
| 130 | |
| 131 | return XN_STATUS_OK; |
| 132 | } |
| 133 | |
| 134 | XnStatus RecorderNode::OnNodeRemoved(const XnChar* strNodeName) |
| 135 | { |
no test coverage detected