/// <summary>
/// Reads the attribute values from the server.
/// </summary>
/// <param name="valuesToWrite">The values to write.</param>
/// <returns>The results.</returns>
public int[] Write(WriteValueCollection valuesToWrite)
{
TraceState("Write", valuesToWrite.Count);
// check for valid session.
Session session = m_session;
if (session == null)
{
throw ComUtils.CreateComException(ResultIds.E_FAIL);
}
int masterError = ResultIds.E_FAIL;
int[] errors = new int[valuesToWrite.Count];
if (session != null)
{
try
{
// write the values.
StatusCodeCollection results = null;
DiagnosticInfoCollection diagnosticInfos = null;
session.Write(
null,
valuesToWrite,
out results,
out diagnosticInfos);
ClientBase.ValidateResponse(results, valuesToWrite);
ClientBase.ValidateDiagnosticInfos(diagnosticInfos, valuesToWrite);
// convert the response.
for (int ii = 0; ii < results.Count; ii++)
{
errors[ii] = ComDaProxy.MapWriteStatusToErrorCode(valuesToWrite[ii].Value, results[ii]);
}
// return the results.
return(errors);
}
catch (Exception e)
{
masterError = ComUtils.GetErrorCode(e, ResultIds.E_FAIL);
}
}
// report any unexpected errors.
for (int ii = 0; ii < errors.Length; ii++)
{
errors[ii] = masterError;
}
return(errors);
}