Code: Select all
UaStatus Configuration::updateNamespaceIndexes(const UaStringArray& namespaceArray)
{
UaStatus result;
OpcUa_UInt32 i, j;
OpcUa_UInt32 size;
// create mapping table
size = m_namespaceArray.length();
UaInt16Array mappingTable;
mappingTable.resize(size);
// fill mapping table
for (i = 0; i < m_namespaceArray.length(); i++)
{
mappingTable[i] = (OpcUa_UInt16)i;
// find namespace uri
for (j = 0; j < namespaceArray.length(); j++)
{
UaString string1(m_namespaceArray[i]);
UaString string2(namespaceArray[j]);
if (string1 == string2)
{
mappingTable[i] = (OpcUa_UInt16)j;
break;
}
}
}
// NodesToRead
for (i = 0; i < m_nodesToRead.length(); i++)
{
m_nodesToRead[i].NamespaceIndex = mappingTable[m_nodesToRead[i].NamespaceIndex];
}
//Node to write
for (i = 0; i < m_nodesToWrite.length(); i++)
{
m_nodesToWrite[i].NamespaceIndex = mappingTable[m_nodesToWrite[i].NamespaceIndex];
}
// NodesToMonitor
for (i = 0; i < m_nodesToMonitor.length(); i++)
{
m_nodesToMonitor[i].NamespaceIndex = mappingTable[m_nodesToMonitor[i].NamespaceIndex];
}
// update namespace array
m_namespaceArray = namespaceArray;
return result;
}
Code: Select all
m_nodesToRead[i].NamespaceIndex = mappingTable[m_nodesToRead[i].NamespaceIndex];
Code: Select all
UA_Client_SDK.exe!UaInt16Array::operator[](unsigned long index) Line 8439 C++
UA_Client_SDK.exe!Configuration::updateNamespaceIndexes(const UaStringArray & namespaceArray) Line 315 C++
UA_Client_SDK.exe!SampleClient::connectionStatusChanged(unsigned long clientConnectionId, UaClientSdk::UaClient::ServerStatus serverStatus) Line 90 C++
UA_Client_SDK.exe!UaClientSdk::UaSessionPrivate::doTryReconnect() Line 10810 C++
UA_Client_SDK.exe!UaClientSdk::UaSessionPrivate::run() Line 9381 C++
UA_Client_SDK.exe!UaThread::ThreadMain() Line 136 C++
Does anyone know why this occurs?