public AFListResults <PIPoint, AFDataPipeEvent> AddSignupsWithInitEvents(IList <PIPoint> piPoints) { if (_PIPipe != null) { return(_PIPipe.AddSignupsWithInitEvents(piPoints)); } else { throw new NullReferenceException("The PIDataPipe cannot be null"); } }
private void SubscribeToPointUpdates(MeasurementKey[] keys) { OnStatusMessage(MessageLevel.Info, $"Subscribing to updates for {keys.Length} measurements..."); var query = from row in DataSource.Tables["ActiveMeasurements"].AsEnumerable() from key in keys where row["ID"].ToString() == key.ToString() select new { Key = key, AlternateTag = row["AlternateTag"].ToString(), PointTag = row["PointTag"].ToString() }; List <PIPoint> dataPoints = new List <PIPoint>(); foreach (var row in query) { string tagName = row.PointTag; if (!string.IsNullOrWhiteSpace(row.AlternateTag)) { tagName = row.AlternateTag; } OnStatusMessage(MessageLevel.Debug, $"DEBUG: Looking up point tag '{tagName}'..."); PIPoint point = GetPIPoint(m_connection.Server, tagName); if ((object)point != null) { OnStatusMessage(MessageLevel.Debug, $"DEBUG: Found point tag '{tagName}'..."); dataPoints.Add(point); m_tagKeyMap[point.ID] = row.Key; } else { OnStatusMessage(MessageLevel.Debug, $"DEBUG: Failed to find point tag '{tagName}'..."); } } // Remove sign-ups for any existing point list if ((object)m_dataPoints != null) { m_dataPipe.RemoveSignups(m_dataPoints); } // Sign up for updates on selected points AFListResults <PIPoint, AFDataPipeEvent> initialEvents = m_dataPipe.AddSignupsWithInitEvents(dataPoints); OnStatusMessage(MessageLevel.Debug, $"DEBUG: Initial event count = {initialEvents.Results.Count}..."); foreach (AFDataPipeEvent item in initialEvents.Results) { OnStatusMessage(MessageLevel.Debug, "DEBUG: Found initial event for action..."); if (item.Action != AFDataPipeAction.Delete) { m_dataUpdateObserver_DataUpdated(this, new EventArgs <AFValue>(item.Value)); } } m_dataPoints = dataPoints; m_eventTimer.Enabled = true; }