/// <summary> /// Creates the update requests. /// </summary> 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; }
/// <summary> /// Creates the update requests. /// </summary> private List<HdaUpdateRequest> CreateUpdateRequests( Session session, DateTime[] timestamps, int[] serverHandles) { 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; // specify the parameters for the request. DeleteAtTimeDetails details = new DeleteAtTimeDetails(); details.NodeId = request.Handle.NodeId; details.ReqTimes.AddRange(timestamps); request.Details = new ExtensionObject(details); } return requests; }
/// <summary> /// Creates the update requests. /// </summary> private List<HdaUpdateRequest> CreateUpdateRequests( Session session, DateTime startTime, DateTime endTime, int[] serverHandles) { if (startTime == DateTime.MinValue || endTime == DateTime.MinValue) { throw ComUtils.CreateComException(ResultIds.E_INVALIDARG); } 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; // specify the parameters for the request. DeleteRawModifiedDetails details = new DeleteRawModifiedDetails(); details.NodeId = request.Handle.NodeId; details.IsDeleteModified = false; details.StartTime = startTime; details.EndTime = endTime; request.Details = new ExtensionObject(details); } return requests; }
/// <summary> /// Creates the update requests. /// </summary> private List<HdaUpdateRequest> CreateUpdateRequests( Session session, PerformUpdateType updateType, int[] serverHandles, DaValue[] values) { 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. DaValue value = values[ii]; if (value == null) { request.Error = ResultIds.E_FAIL; continue; } // specify the parameters for the request. UpdateDataDetails details = new UpdateDataDetails(); details.NodeId = request.Handle.NodeId; details.PerformInsertReplace = updateType; DataValue value2 = m_mapper.GetRemoteDataValue(value, m_itemManager.GetRemoteDataType(request.Handle)); value2.SourceTimestamp = value.Timestamp; value2.StatusCode = ComUtils.GetHdaQualityCode(value.HdaQuality); details.UpdateValues.Add(value2); request.Details = new ExtensionObject(details); } return requests; }