public DaValue[] Read(ReadValueIdCollection valuesToRead)
{
TraceState("Read", valuesToRead.Count);
// check for valid session.
Session session = m_session;
if (session == null)
{
throw ComUtils.CreateComException(ResultIds.E_FAIL);
}
int masterError = ResultIds.E_FAIL;
DaValue[] results = new DaValue[valuesToRead.Count];
if (session != null)
{
try
{
// read the values.
DataValueCollection values = null;
DiagnosticInfoCollection diagnosticInfos = null;
session.Read(
null,
0,
TimestampsToReturn.Both,
valuesToRead,
out values,
out diagnosticInfos);
ClientBase.ValidateResponse(values, valuesToRead);
ClientBase.ValidateDiagnosticInfos(diagnosticInfos, valuesToRead);
// convert the response.
for (int ii = 0; ii < values.Count; ii++)
{
results[ii] = m_mapper.GetLocalDataValue(values[ii]);
}
// return the results.
return results;
}
catch (Exception e)
{
masterError = ComUtils.GetErrorCode(e, ResultIds.E_FAIL);
}
}
// report any unexpected errors.
for (int ii = 0; ii < results.Length; ii++)
{
DaValue result = results[ii] = new DaValue();
result.Error = masterError;
}
return results;
}