public void FetchNamespaceTables()
{
ReadValueIdCollection nodesToRead = new ReadValueIdCollection();
// request namespace array.
ReadValueId valueId = new ReadValueId();
valueId.NodeId = Variables.Server_NamespaceArray;
valueId.AttributeId = Attributes.Value;
nodesToRead.Add(valueId);
// request server array.
valueId = new ReadValueId();
valueId.NodeId = Variables.Server_ServerArray;
valueId.AttributeId = Attributes.Value;
nodesToRead.Add(valueId);
// read from server.
DataValueCollection values = null;
DiagnosticInfoCollection diagnosticInfos = null;
ResponseHeader responseHeader = this.Read(
null,
0,
TimestampsToReturn.Both,
nodesToRead,
out values,
out diagnosticInfos);
ValidateResponse(values, nodesToRead);
ValidateDiagnosticInfos(diagnosticInfos, nodesToRead);
// validate namespace array.
ServiceResult result = ValidateDataValue(values[0], typeof(string[]), 0, diagnosticInfos, responseHeader);
if (ServiceResult.IsBad(result))
{
throw new ServiceResultException(result);
}
m_namespaceUris.Update((string[])values[0].Value);
// validate server array.
result = ValidateDataValue(values[1], typeof(string[]), 1, diagnosticInfos, responseHeader);
if (ServiceResult.IsBad(result))
{
throw new ServiceResultException(result);
}
m_serverUris.Update((string[])values[1].Value);
}