private List<HdaUpdateRequest> CreateUpdateRequests(
Session session,
int[] serverHandles,
DateTime[] timestamps,
Annotation[][] annotations)
{
List<HdaUpdateRequest> requests = new List<HdaUpdateRequest>();
for (int ii = 0; ii < serverHandles.Length; ii++)
{
HdaUpdateRequest request = new HdaUpdateRequest();
requests.Add(request);
// find handle.
request.Handle = m_itemManager.LookupHandle(serverHandles[ii]);
if (request.Handle == null)
{
request.Error = ResultIds.E_INVALIDHANDLE;
continue;
}
request.ClientHandle = request.Handle.ClientHandle;
// check if nothing to do.
Annotation[] list = annotations[ii];
if (list == null || list.Length == 0)
{
request.Error = ResultIds.S_OK;
continue;
}
// get the annotations proprerty.
NodeId annotationsId = m_itemManager.GetAnnotationsPropertyNodeId(session, request.Handle);
if (NodeId.IsNull(annotationsId))
{
request.Error = ResultIds.E_FAIL;
continue;
}
// specify the parameters for the request.
UpdateDataDetails details = new UpdateDataDetails();
details.NodeId = annotationsId;
details.PerformInsertReplace = PerformUpdateType.Insert;
for (int jj = 0; jj < list.Length; jj++)
{
DataValue value = new DataValue();
value.WrappedValue = new ExtensionObject(list[jj]);
value.SourceTimestamp = timestamps[ii];
details.UpdateValues.Add(value);
}
request.Details = new ExtensionObject(details);
}
return requests;
}
#endregion