private void PollEmptyAdapters() { if ((ExecutionPathDebugLog.IsDebugEnabled) && (Log.IsDebugEnabled)) { Log.Debug(".pollEmptyAdapters emptyAdapters.size==" + _emptyAdapters.Count); } var tempList = new List <CoordinatedAdapter>(); foreach (var adapter in _emptyAdapters) { if (adapter.State == AdapterState.DESTROYED) { tempList.Add(adapter); continue; } var _event = adapter.Read(); if (_event != null) { EventsToSend.Add(_event); _eventsFromAdapters[_event] = adapter; } } foreach (var adapter in tempList) { _emptyAdapters.Remove(adapter); } }
/// <summary> /// Remove the first member of eventsToSend. If there is another record in the CSV file, /// insert the event created from it into eventsToSend. /// </summary> protected override void ReplaceFirstEventToSend() { EventsToSend.Remove(EventsToSend.First()); var _event = Read(); if (_event != null) { EventsToSend.Add(_event); } }
/// <summary> /// Replace the first member of eventsToSend with the next /// event returned by the read() method of the same Adapter that /// provided the first event. /// </summary> protected override void ReplaceFirstEventToSend() { if ((ExecutionPathDebugLog.IsDebugEnabled) && (Log.IsDebugEnabled)) { Log.Debug(".ReplaceFirstEventToSend Replacing event"); } var _event = EventsToSend.First(); EventsToSend.Remove(_event); AddNewEvent(_eventsFromAdapters.Get(_event)); _eventsFromAdapters.Remove(_event); PollEmptyAdapters(); }
private void AddNewEvent(CoordinatedAdapter adapter) { if ((ExecutionPathDebugLog.IsDebugEnabled) && (Log.IsDebugEnabled)) { Log.Debug(".addNewEvent eventsFromAdapters==" + _eventsFromAdapters); } var _event = adapter.Read(); if (_event != null) { if ((ExecutionPathDebugLog.IsDebugEnabled) && (Log.IsDebugEnabled)) { Log.Debug(".addNewEvent event==" + _event); } EventsToSend.Add(_event); _eventsFromAdapters[_event] = adapter; } else { if (adapter.State == AdapterState.DESTROYED) { var keyList = new LinkedList <SendableEvent>(); foreach (var entry in _eventsFromAdapters) { if (entry.Value == adapter) { keyList.AddFirst(entry.Key); } } foreach (var keyEvent in keyList) { _eventsFromAdapters.Remove(keyEvent); } } else { _emptyAdapters.Add(adapter); } } }
public override SendableEvent Read() { if (StateManager.State == AdapterState.DESTROYED || _atEof) { return(null); } try { if (EventsToSend.IsEmpty()) { if (_beanType != null) { return(new SendableBeanEvent(NewMapEvent(), _beanType, _eventTypeName, _totalDelay, ScheduleSlot)); } return(new SendableMapEvent(NewMapEvent(), _eventTypeName, _totalDelay, ScheduleSlot)); } var theEvent = EventsToSend.First(); EventsToSend.Remove(theEvent); return(theEvent); } catch (EndOfStreamException) { if ((ExecutionPathDebugLog.IsDebugEnabled) && (Log.IsDebugEnabled)) { Log.Debug(".read reached end of CSV file"); } _atEof = true; if (StateManager.State == AdapterState.STARTED) { Stop(); } else { Destroy(); } return(null); } }
/// <summary> ///@see com.espertech.esper.adapter.ReadableAdapter#read() /// </summary> public override SendableEvent Read() { if ((ExecutionPathDebugLog.IsDebugEnabled) && (Log.IsDebugEnabled)) { Log.Debug(".read"); } PollEmptyAdapters(); var isEventsToSendEmpty = EventsToSend.IsEmpty(); var isEventsFromAdaptersEmpty = _eventsFromAdapters.IsEmpty(); var isEmptyAdaptersEmpty = _emptyAdapters.IsEmpty(); if ((ExecutionPathDebugLog.IsDebugEnabled) && (Log.IsDebugEnabled)) { Log.Debug(".read eventsToSend.isEmpty==" + isEventsToSendEmpty); Log.Debug(".read eventsFromAdapters.isEmpty==" + isEventsFromAdaptersEmpty); Log.Debug(".read emptyAdapters.isEmpty==" + isEmptyAdaptersEmpty); } if (isEventsToSendEmpty && isEventsFromAdaptersEmpty && isEmptyAdaptersEmpty) { Stop(); } if (StateManager.State == AdapterState.DESTROYED || isEventsToSendEmpty) { return(null); } var result = EventsToSend.First(); ReplaceFirstEventToSend(); return(result); }