private bool ReadAttributes(
Session session,
ExtensionObject extension,
List<HdaReadRequest> requests,
bool releaseContinuationPoints)
{
ReadRawModifiedDetails details = extension.Body as ReadRawModifiedDetails;
if (details == null)
{
return false;
}
// check if reading historical values.
if (details.EndTime != DateTime.MinValue)
{
return ReadNext(session, extension, requests, false);
}
HdaItemHandle handle = null;
List<uint> attributeIds = new List<uint>();
List<int> indexes = new List<int>();
// build the list of requests.
for (int ii = 0; ii < requests.Count; ii++)
{
HdaReadRequest request = requests[ii];
if (request.Error < 0)
{
continue;
}
// handle should be the same for all.
if (handle == null)
{
handle = request.Handle;
}
attributeIds.Add(request.AttributeId);
indexes.Add(ii);
}
// check if nothing to do.
if (attributeIds.Count == 0)
{
return false;
}
// reads the current values for all requested attributes.
DaValue[] values = m_itemManager.ReadCurrentValues(session, handle, attributeIds.ToArray());
// build the list of requests.
for (int ii = 0; ii < attributeIds.Count; ii++)
{
HdaReadRequest request = requests[indexes[ii]];
if (values[ii].Error < 0)
{
request.Error = values[ii].Error;
}
else
{
request.Values = new List<DaValue>();
request.Values.Add(values[ii]);
}
request.IsComplete = true;
}
return false;
}
#endregion