public SearchHpicGraphView ShowSearchHpicGraphView(ListViewPanel panel, DataListener dataListener) { SearchHpicGraphView graphView = new SearchHpicGraphView(); graphView.Interval = 30; var columnInfoList = dataListener.GetColumnsInfo(); string deviceKey = dataListener.DeviceKey; foreach (var columnInfo in columnInfoList) { // Time would be deal as a Chart. if (columnInfo.BindingName.ToLower() == "time") { continue; } if (columnInfo.DisplayInChart) { graphView.AddLineName(deviceKey, columnInfo.BindingName, columnInfo.Header); } } return(graphView); }
// Real time graph public GraphView ShowGraphView(ListViewPanel panel, DataListener dataListener) { GraphView graphView = new GraphView(); graphView.Interval = 30; if (dataListener.DeviceKey == "scada.naidevice") { graphView.Interval = 60 * 5; } graphView.AddDataListener(dataListener); var columnInfoList = dataListener.GetColumnsInfo(); string deviceKey = dataListener.DeviceKey; foreach (var columnInfo in columnInfoList) { // Time would be deal as a Chart. if (columnInfo.BindingName.ToLower() == "time") { continue; // Do nothing would be OK. } if (columnInfo.DisplayInChart) { graphView.AddLineName(deviceKey, columnInfo.BindingName, columnInfo.Header); } } return(graphView); }
public void TestAntlr() { var listener = new DataListener(); listener.Created = x => { Assert.AreEqual("PFF", x.T); var label = x.Label as SimpleLabel; Assert.AreEqual(0.521144, label.Label, 1e-5); Assert.AreEqual(1, label.Initial); Assert.AreEqual(13, x.F.Count); Assert.AreEqual("t1", x.F[0].Key); Assert.AreEqual(-0.0236849, x.F[0].Value, 1e-5); }; var line1 = "0.521144 1 PFF/20091028|T PFF |f t1:-0.0236849 t5:-0.10215 r5:0.727735 t10:-0.0387662 r10:0.911208 t20:-0.00777943 r20:0.952668 t40:0.014542 r40:0.832479 t60:0.00395449 r60:0.724504 t90:0.0281418 r90:0.784653"; VWTestHelper.ParseInput(new MemoryStream(Encoding.UTF8.GetBytes(line1)), listener); listener.Created = x => { var label = x.Label as SimpleLabel; Assert.AreEqual(1, label.Label, 1e-5); Assert.AreEqual(49, x.F.Count); }; var line2 = "1 |f 13:3.9656971e-02 24:3.4781646e-02 69:4.6296168e-02 85:6.1853945e-02 140:3.2349996e-02 156:1.0290844e-01 175:6.8493910e-02 188:2.8366476e-02 229:7.4871540e-02 230:9.1505975e-02 234:5.4200061e-02 236:4.4855952e-02 238:5.3422898e-02 387:1.4059304e-01 394:7.5131744e-02 433:1.1118756e-01 434:1.2540409e-01 438:6.5452829e-02 465:2.2644201e-01 468:8.5926279e-02 518:1.0214076e-01 534:9.4191484e-02 613:7.0990764e-02 646:8.7701865e-02 660:7.2289191e-02 709:9.0660661e-02 752:1.0580081e-01 757:6.7965068e-02 812:2.2685185e-01 932:6.8250686e-02 1028:4.8203137e-02 1122:1.2381379e-01 1160:1.3038123e-01 1189:7.1542501e-02 1530:9.2655659e-02 1664:6.5160148e-02 1865:8.5823394e-02 2524:1.6407280e-01 2525:1.1528353e-01 2526:9.7131468e-02 2536:5.7415009e-01 2543:1.4978983e-01 2848:1.0446861e-01 3370:9.2423186e-02 3960:1.5554591e-01 7052:1.2632671e-01 16893:1.9762035e-01 24036:3.2674628e-01 24303:2.2660980e-010"; VWTestHelper.ParseInput(new MemoryStream(Encoding.UTF8.GetBytes(line2)), listener); }
public Property(PluginProperty pluginProperty) { this.pluginProperty = pluginProperty; ClearValueCommand = new DelegateCommand(parameter => HasOwnValue, parameter => Value = null); callback = new DataListener(this); DisplayFileChooserCommand = new DelegateCommand(null, parameter => { DialogService.ShowFileChooserDialog((result, pathName) => { if (result == true) { string fileName = System.IO.Path.GetFileName(pathName); if (!Workspace.Instance.Project.HasAssetWithFileName(fileName)) { Notify(new AssetUsed(pathName)); Value = new Value("\"" + fileName + "\""); } else { Workspace.Instance.DialogService.Warn("Asset Already Exists", "This project already contains an asset named " + fileName + ".", System.Windows.MessageBoxButton.OK); } } }, this.PluginProperty.FileFilter, this.PluginProperty.FileChooserTitle); }); }
public void TestAntlr() { var listener = new DataListener(); listener.Created = (x, plabel) => { Assert.AreEqual("PFF", x.T); var label = plabel as SimpleLabel; Assert.AreEqual(0.521144, label.Label, 1e-5); Assert.AreEqual(1, label.Initial); Assert.AreEqual(13, x.F.Count); Assert.AreEqual("t1", x.F[0].Key); Assert.AreEqual(-0.0236849, x.F[0].Value, 1e-5); }; var line1 = "0.521144 1 PFF/20091028|T PFF |f t1:-0.0236849 t5:-0.10215 r5:0.727735 t10:-0.0387662 r10:0.911208 t20:-0.00777943 r20:0.952668 t40:0.014542 r40:0.832479 t60:0.00395449 r60:0.724504 t90:0.0281418 r90:0.784653"; VWTestHelper.ParseInput(new MemoryStream(Encoding.UTF8.GetBytes(line1)), listener); listener.Created = (x, plabel) => { var label = plabel as SimpleLabel; Assert.AreEqual(1, label.Label, 1e-5); Assert.AreEqual(49, x.F.Count); }; var line2 = "1 |f 13:3.9656971e-02 24:3.4781646e-02 69:4.6296168e-02 85:6.1853945e-02 140:3.2349996e-02 156:1.0290844e-01 175:6.8493910e-02 188:2.8366476e-02 229:7.4871540e-02 230:9.1505975e-02 234:5.4200061e-02 236:4.4855952e-02 238:5.3422898e-02 387:1.4059304e-01 394:7.5131744e-02 433:1.1118756e-01 434:1.2540409e-01 438:6.5452829e-02 465:2.2644201e-01 468:8.5926279e-02 518:1.0214076e-01 534:9.4191484e-02 613:7.0990764e-02 646:8.7701865e-02 660:7.2289191e-02 709:9.0660661e-02 752:1.0580081e-01 757:6.7965068e-02 812:2.2685185e-01 932:6.8250686e-02 1028:4.8203137e-02 1122:1.2381379e-01 1160:1.3038123e-01 1189:7.1542501e-02 1530:9.2655659e-02 1664:6.5160148e-02 1865:8.5823394e-02 2524:1.6407280e-01 2525:1.1528353e-01 2526:9.7131468e-02 2536:5.7415009e-01 2543:1.4978983e-01 2848:1.0446861e-01 3370:9.2423186e-02 3960:1.5554591e-01 7052:1.2632671e-01 16893:1.9762035e-01 24036:3.2674628e-01 24303:2.2660980e-010"; VWTestHelper.ParseInput(new MemoryStream(Encoding.UTF8.GetBytes(line2)), listener); }
public ListViewPanel CreateDataViewPanel(DBDataProvider dataProvider, ConfigEntry entry, bool showList = true) { string deviceKey = entry.DeviceKey; string displayName = entry.DisplayName; if (this.panelDict.ContainsKey(deviceKey)) { ListViewPanel panel = this.panelDict[deviceKey]; if (this.currentPanel != panel) { this.currentPanel.Visibility = Visibility.Hidden; } panel.Visibility = Visibility.Visible; this.currentPanel = panel; return(panel); } else { // ! ListViewPanel panel = new ListViewPanel(dataProvider, entry); DataListener dataListener = dataProvider.GetDataListener(deviceKey); panel.SetIcon(entry.Icon); panel.AddDataListener(dataListener); if (showList) { panel.ListView = this.ShowListView(panel, dataListener); panel.SearchView = this.ShowListView(panel, dataListener); panel.GraphView = this.ShowGraphView(panel, dataListener); panel.GraphSearchView = this.ShowSearchGraphView(panel, dataListener); // Notice; Comment 4-7. // panel.ListRecentData(); // 是否显示 控制面板 if (deviceKey == DataProvider.DeviceKey_MDS) { panel.ControlPanel = this.ShowControlView(DataProvider.DeviceKey_MDS); } else if (deviceKey == DataProvider.DeviceKey_AIS) { panel.ControlPanel = this.ShowControlView(DataProvider.DeviceKey_AIS); } else if (deviceKey == DataProvider.DeviceKey_NaI) { panel.SetupContextMenu((ListView)panel.ListView); panel.SetupContextMenu((ListView)panel.SearchView); panel.EnergyPanel = this.ShowEnergyView(DataProvider.DeviceKey_NaI); } } if (this.currentPanel != null) { this.currentPanel.Visibility = Visibility.Hidden; } this.currentPanel = panel; this.panelDict.Add(deviceKey, panel); return(panel); } }
//添加监听 public override void AddListener(DataListener listener) { base.AddListener(listener); if (mDataList != null && mDataList.Count > 0 && listener.FullUpdateFirst) { listener.FireEventForListener(mDataList); } }
public virtual void removeDataListener(DataListener l) { if (l == null) { return; } this.listeners.remove(l); }
public virtual void addDataListener(DataListener l) { if (l == null) { return; } this.listeners.add(l); }
//添加监听事件 public virtual void AddListener(DataListener listener) { mListenerList.Add(listener); //如果holder是IAutoObservable类型,则调用AddObservableData接口将该data记录 if (listener.Holder != null && listener.Holder is IAutoObserver) { (listener.Holder as IAutoObserver).AddObservableData(this); } }
private void reloadChkdData() { DataListener.SuspendListen(); if (objStudent.Class != null) { cboClass.Text = objStudent.Class.Name; cboClass.Items.Add(objStudent.Class.Name); this._DefaultClassName = objStudent.Class.Name; } else { cboClass.Text = string.Empty; } cboSeatNo.Text = string.Empty; this._DefaultSeatNo = string.Empty; // 當有座號 if (objStudent.SeatNo.HasValue) { if (objStudent.SeatNo.Value > 0) { string strSeatNo = objStudent.SeatNo.Value + ""; cboSeatNo.Text = strSeatNo; cboSeatNo.Items.Add(strSeatNo); this._DefaultSeatNo = strSeatNo; } } // 當有學號 if (string.IsNullOrEmpty(objStudent.StudentNumber)) { this._DefaultStudNum = string.Empty; txtStudentNumber.Text = string.Empty; } else { txtStudentNumber.Text = objStudent.StudentNumber; this._DefaultStudNum = objStudent.StudentNumber; } prlp.SetBeforeSaveText("班級", cboClass.Text); prlp.SetBeforeSaveText("座號", cboSeatNo.Text); prlp.SetBeforeSaveText("學號", txtStudentNumber.Text); tmpClassName = cboClass.Text; setClassName(); setClassNo(); DataListener.Reset(); DataListener.ResumeListen(); this.Loading = false; }
static public InsertDataListenerStack operator -(InsertDataListenerStack stack, DataListener listener) { DataListener value = stack._listeners.FirstOrDefault(x => x.Method.Name == listener.Method.Name); if (value != null) { stack._listeners.Remove(value); } return(stack); }
public void AddDataListener(DataListener listener) { this.dataListener = listener; if (this.dataListener != null) { this.dataListener.OnDataArrivalBegin += this.OnDataArrivalBegin; this.dataListener.OnDataArrival += this.OnDataArrival; this.dataListener.OnDataArrivalEnd += this.OnDataArrivalEnd; } }
private void reloadChkdData() { DataListener.SuspendListen(); if (objStudent != null) { if (objStudent.Class != null) { lblClassName.Text = objStudent.Class.Name; this._DefaultClassName = objStudent.Class.Name; } else { lblClassName.Text = string.Empty; } lblSeatNo.Text = string.Empty; this._DefaultSeatNo = string.Empty; // 當有座號 if (objStudent.SeatNo.HasValue) { if (objStudent.SeatNo.Value > 0) { string strSeatNo = objStudent.SeatNo.Value.ToString(); lblSeatNo.Text = strSeatNo; this._DefaultSeatNo = strSeatNo; } } // 當有學號 if (string.IsNullOrEmpty(objStudent.StudentNumber)) { this._DefaultStudNum = string.Empty; txtStudentNumber.Text = string.Empty; } else { txtStudentNumber.Text = objStudent.StudentNumber; this._DefaultStudNum = objStudent.StudentNumber; } prlp.SetBeforeSaveText("班級", lblClassName.Text); prlp.SetBeforeSaveText("座號", lblSeatNo.Text); prlp.SetBeforeSaveText("學號", txtStudentNumber.Text); tmpClassName = lblClassName.Text; } DataListener.Reset(); DataListener.ResumeListen(); this.Loading = false; }
public override Data getData() { Data data = this.getPredecessor().getData(); Iterator iterator = this.listeners.iterator(); while (iterator.hasNext()) { DataListener dataListener = (DataListener)iterator.next(); dataListener.processDataFrame(data); } return(data); }
Data ClientData; //Contains all temporary data within the GUI public frmMain() { ClientData = new Data(); DataListener dataListener = new DataListener(); // Add an event handler dataListener.somethingReceivedHandler += (object sender, SomethingData packet) { if (someContext) ClientData.SomeList.Add(packet); }; InitializeComponent(); }
// No need. public void AddDataListener(DataListener listener) { /* * this.dataListener = listener; * if (this.dataListener != null) * { * this.dataListener.OnDataArrivalBegin += this.OnDataArrivalBegin; * this.dataListener.OnDataArrival += this.OnDataArrival; * this.dataListener.OnDataArrivalEnd += this.OnDataArrivalEnd; * } */ }
private void item_Click(object sender, EventArgs e) { ButtonItem item = sender as ButtonItem; CardPanelEnabled = true; LabelNameText = item.Text; SelectedItem = item; DataListener.SuspendListen(); SetContent((item.Tag as ScoreCalcRuleRecord).Content); DataListener.Reset(); DataListener.ResumeListen(); }
public ListViewPanel CreateDataViewPanel(DataProvider dataProvider, ConfigEntry entry, bool showList = true) { string deviceKey = entry.DeviceKey; string displayName = entry.DisplayName; if (this.panelDict.ContainsKey(deviceKey)) { ListViewPanel panel = this.panelDict[deviceKey]; if (this.currentPanel != panel) { this.currentPanel.Visibility = Visibility.Hidden; } panel.Visibility = Visibility.Visible; this.currentPanel = panel; return(panel); } else { // ! ListViewPanel panel = new ListViewPanel(dataProvider, entry); DataListener dataListener = dataProvider.GetDataListener(deviceKey); panel.AddDataListener(dataListener); if (showList) { panel.ListView = this.ShowListView(panel, dataListener); panel.SearchView = this.ShowListView(panel, dataListener); panel.GraphView = this.ShowGraphView(panel, dataListener, true); panel.GraphSearchView = this.ShowSearchGraphView(panel, dataListener, false); panel.ListRecentData(); // 是否显示 控制面板 if (deviceKey == DataProvider.DeviceKey_HvSampler) { panel.ControlPanel = this.ShowControlView(DataProvider.DeviceKey_HvSampler); } else if (deviceKey == DataProvider.DeviceKey_ISampler) { panel.ControlPanel = this.ShowControlView(DataProvider.DeviceKey_ISampler); } } if (this.currentPanel != null) { this.currentPanel.Visibility = Visibility.Hidden; } this.currentPanel = panel; this.panelDict.Add(deviceKey, panel); return(panel); } }
public virtual void processDataFrame(Data data) { this.featureBuffer.add(data); Iterator iterator = this.dataListeners.iterator(); while (iterator.hasNext()) { DataListener dataListener = (DataListener)iterator.next(); dataListener.processDataFrame(data); } while (this.featureBuffer.size() > this.maxBufferSize) { this.featureBuffer.remove(0); } }
public void AddDataListener(DataListener listener) { this.dataListener = listener; if (this.dataListener != null) { this.dataListener.OnDataArrivalBegin += this.OnDataArrivalBegin; this.dataListener.OnDataArrival += this.OnDataArrival; this.dataListener.OnDataArrivalEnd += this.OnDataArrivalEnd; } // TODO: !! this.dataSource = new List <Dictionary <string, object> >(); this.searchDataSource = new List <Dictionary <string, object> >(); }
public void SendObject_SingleObjectIsSentSuccessfully_ReceivedObjectIsCorrect(int port, bool useProtobuf) { var messageListener = new DataListener <SimpleObject>(port, useProtobuf); messageListener.Listen(); var server = new StreamingServer(port, useProtobuf); server.SendObject("John"); Thread.Sleep(2000); var receivedMessages = messageListener.ReceivedObjects.Cast <SimpleObject>(); receivedMessages.Should().BeEquivalentTo(new SimpleObject { Name = "John" }); }
/* * dotnet run {1234} * or * dotnet .\Sample.dll {1234} * or * .\Sample.exe {1234} * or * .\Sample {1234} * * depending on how you built/published */ public static async Task <int> Main(string[] args) { int port = TrySetPortNumber(args, out int p) ? p : DataListener.DefaultPort; IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, port); using DataListener listener = new DataListener(endPoint); using CancellationTokenSource tokenSource = new CancellationTokenSource(); Console.CancelKeyPress += (s, e) => { e.Cancel = true; Console.Write("exiting..."); tokenSource.Cancel(); }; Console.WriteLine($"begin listening for data on port {port}"); StringBuilder sb = new StringBuilder(); await foreach (Packet packet in listener.ListenAsync(tokenSource.Token)) { if (packet.EndPoint is null || packet.Dash is null) { continue; } sb.Append($"{packet.EndPoint.Address}:{packet.EndPoint.Port} - "); sb.Append($"pos.: {packet.Dash.RacePosition} - "); sb.Append($"lap: {packet.Dash.LapNumber} - "); sb.Append($"cur. race time: {packet.Dash.CurrentRaceTime}"); Console.WriteLine(sb.ToString()); sb.Clear(); } Console.WriteLine(" - exited!"); return(0); }
static void Main() { DataSource source1 = new DataSource("Source 1"), source2 = new DataSource("Source 2"); DataListener listener1 = new DataListener("Listener 1"), listener2 = new DataListener("Listener 2"); listener1.Subscribe(source1); listener2.Subscribe(source2); // now we'll release one source and one listener, and force a collect source1 = null; listener2 = null; GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced); GC.WaitForPendingFinalizers(); // source 1 gets collected, ONLY Console.WriteLine("Done"); Console.ReadLine(); GC.KeepAlive(source2); // prevents collection due to optimisation GC.KeepAlive(listener1); // prevents collection due to optimisation }
public ListView ShowListView(ListViewPanel panel, DataListener dataListener) { // ListView ListView listView = new ListView(); GridView gridView = new GridView(); listView.View = gridView; var columnInfoList = dataListener.GetColumnsInfo(); // new List<ColumnInfo>(); foreach (var columnInfo in columnInfoList) { GridViewColumn col = new GridViewColumn(); col.Header = columnInfo.Header; string bindingName = string.Format("[{0}]", columnInfo.BindingName); col.DisplayMemberBinding = new Binding(bindingName.ToLower()); col.Width = columnInfo.Width; gridView.Columns.Add(col); } return(listView); }
/// <summary> /// Handles the <see cref="DataListener.DataExtracted"/> event for all the <see cref="Listeners"/>. /// </summary> /// <param name="sender"><see cref="DataListener"/> object that raised the event.</param> /// <param name="e"><see cref="EventArgs{T}"/> object where <see cref="EventArgs{T}.Argument"/> is the collection of real-time time-sereis data received.</param> protected virtual void ProcessRealTimeData(object sender, EventArgs <IList <IDataPoint> > e) { DataListener listener = (DataListener)sender; List <Export> exportsList = new List <Export>(); // Get a local copy of all the exports associated with this exporter. lock (m_exports) { exportsList.AddRange(m_exports); } // Process all the exports. foreach (Export export in exportsList) { if (export.Type == ExportType.RealTime && export.FindRecords(listener.ID).Count > 0) { // This export is configured to be processed in real-time and has one or more records // from this listener to be exported, so we'll queue the real-time data for processing. m_realTimeExportQueue.Add(new RealTimeData(export, listener, e.Argument)); } } // We prevent flooding the queue by allowing a fixed number of request to queued at a given time. // Doing so also prevents running out-of-memory that could be caused by exporters taking longer than // normal to process its exports. Longer than normal processing time will back-log processing to a // point that it might become impossible to catch-up because of the rate at which data may be parsed. int drops = 0; RealTimeData data; while (m_realTimeExportQueue.Count > MaximumQueuedRequest) { m_realTimeExportQueue.TryTake(out data); drops++; } if (drops > 0) { OnStatusUpdate(string.Format("Dropped {0} time-series data points to prevent flooding.", drops)); } }
/// <summary> /// Listens for connections and creates a thread for each client /// </summary> private void Listen() { try { while (ServerStatus) { TcpClient clientData = DataListener?.AcceptTcpClient(); if (clientData != null) { Application.Current.Dispatcher.Invoke((Action) delegate // <--- HERE { ConnectedClients.Add(new NetworkClient(clientData.Client.RemoteEndPoint.ToString())); }); Task.Run(() => ClientHandler(clientData)); } } } catch // server went offline { MessageBox.Show("Server is offline, connection listening stopped", "Message"); } }
/// <summary> /// Handles the <see cref="DataListener.DataExtracted"/> event for all the <see cref="ExporterBase.Listeners"/>. /// </summary> /// <param name="sender"><see cref="DataListener"/> object that raised the event.</param> /// <param name="e"><see cref="EventArgs{T}"/> object where <see cref="EventArgs{T}.Argument"/> is the collection of real-time time-sereis data received.</param> protected override void ProcessRealTimeData(object sender, EventArgs <IList <IDataPoint> > e) { DataListener listener = (DataListener)sender; List <Export> exportsList = new List <Export>(); lock (Exports) { // Get a local copy of all the exports this exporter is responsible for. exportsList.AddRange(Exports); } // Queue the export and parsed data for processing if: // - Export has records that are from the listener whose data we have received // - Export is not "Real-Time", since real-time exports are not supported by this exporter foreach (Export export in exportsList) { if (export.FindRecords(listener.ID).Count > 0 && export.Type != ExportType.RealTime) { RealTimeExportQueue.Add(new RealTimeData(export, listener, e.Argument)); } } }
public static StackLayout BindTo <TModel, TView>( this StackLayout stackLayout, DataListener <IEnumerable <TModel> > listener, Func <TModel, TView> createView, bool requiresAppend = false ) where TView : View { listener.OnSet = list => { if (list == null) { return; } if (!requiresAppend) { stackLayout.Children.Clear(); } foreach (var m in list) { stackLayout.Children.Add(createView(m)); } }; return(stackLayout); }
protected override void ProcessRealTimeExport(Export export, DataListener listener, IList <IDataPoint> data) { throw new NotSupportedException(); // Real-Time exports not supported. }
/// <summary> /// When overridden in a derived class, processes the <paramref name="export"/> using the real-time <paramref name="data"/>. /// </summary> /// <param name="export"><see cref="Export"/> to be processed.</param> /// <param name="listener"><see cref="DataListener"/> that provided the <paramref name="data"/>.</param> /// <param name="data">Real-time time-series data received by the <paramref name="listener"/>.</param> protected abstract void ProcessRealTimeExport(Export export, DataListener listener, IList<IDataPoint> data);
/// <summary> /// Initializes a new instance of the <see cref="RealTimeData"/> class. /// </summary> /// <param name="export">The <see cref="Export"/> to which the <paramref name="data"/> belongs.</param> /// <param name="listener">The <see cref="DataListener"/> that provided the <paramref name="data"/>.</param> /// <param name="data">The real-time time-series data received by the <paramref name="listener"/>.</param> public RealTimeData(Export export, DataListener listener, IList<IDataPoint> data) { this.Export = export; this.Listener = listener; this.Data = data; }
/// <summary> /// Initializes a new instance of the <see cref="RealTimeData"/> class. /// </summary> /// <param name="export">The <see cref="Export"/> to which the <paramref name="data"/> belongs.</param> /// <param name="listener">The <see cref="DataListener"/> that provided the <paramref name="data"/>.</param> /// <param name="data">The real-time time-series data received by the <paramref name="listener"/>.</param> public RealTimeData(Export export, DataListener listener, IList <IDataPoint> data) { this.Export = export; this.Listener = listener; this.Data = data; }
/// <summary> /// When overridden in a derived class, processes the <paramref name="export"/> using the real-time <paramref name="data"/>. /// </summary> /// <param name="export"><see cref="Export"/> to be processed.</param> /// <param name="listener"><see cref="DataListener"/> that provided the <paramref name="data"/>.</param> /// <param name="data">Real-time time-series data received by the <paramref name="listener"/>.</param> protected abstract void ProcessRealTimeExport(Export export, DataListener listener, IList <IDataPoint> data);
protected override void ProcessRealTimeExport(Export export, DataListener listener, IList<IDataPoint> data) { throw new NotSupportedException(); // Real-Time exports not supported. }
/// <summary> /// Processes the <paramref name="export"/> using the real-time <paramref name="data"/>. /// </summary> /// <param name="export"><see cref="Export"/> to be processed.</param> /// <param name="listener"><see cref="DataListener"/> that provided the <paramref name="data"/>.</param> /// <param name="data">Real-time time-series data received by the <paramref name="listener"/>.</param> protected override void ProcessRealTimeExport(Export export, DataListener listener, IList<IDataPoint> data) { // In case of real-time export, immediately transmit the received data. TransmitData(export, data); }