/// <summary> /// Ctor. /// </summary> /// <param name="agentInstanceViewFactoryContext">The agent instance view factory context.</param> /// <param name="factory">the view factory</param> /// <param name="eventType">the parent event type</param> /// <param name="viewList">the list of data window views</param> public UnionAsymetricView(AgentInstanceViewFactoryChainContext agentInstanceViewFactoryContext, UnionViewFactory factory, EventType eventType, IList <View> viewList) { _agentInstanceViewFactoryContext = agentInstanceViewFactoryContext; _unionViewFactory = factory; _eventType = eventType; _views = viewList.ToArray(); _unionWindow = new RefCountedSet <EventBean>(); _oldEventsPerView = new EventBean[viewList.Count][]; for (var i = 0; i < viewList.Count; i++) { var view = new LastPostObserverView(i); _views[i].RemoveAllViews(); _views[i].AddView(view); view.Observer = this; } // recover for (var i = 0; i < _views.Length; i++) { var viewSnapshot = _views[i].GetEnumerator(); while (viewSnapshot.MoveNext()) { var theEvent = viewSnapshot.Current; _unionWindow.Add(theEvent); } } }
/// <summary> /// Ctor. /// </summary> /// <param name="agentInstanceViewFactoryContext">The agent instance view factory context.</param> /// <param name="factory">the view _factory</param> /// <param name="viewList">the list of data window views</param> public IntersectDefaultView( AgentInstanceViewFactoryChainContext agentInstanceViewFactoryContext, IntersectViewFactory factory, IList<View> viewList) { AgentInstanceViewFactoryContext = agentInstanceViewFactoryContext; _factory = factory; mViews = viewList.ToArray(); for (int i = 0; i < viewList.Count; i++) { LastPostObserverView view = new LastPostObserverView(i); mViews[i].RemoveAllViews(); mViews[i].AddView(view); view.Observer = this; } }
/// <summary> /// Ctor. /// </summary> /// <param name="agentInstanceViewFactoryContext">The agent instance view factory context.</param> /// <param name="factory">the view factory</param> /// <param name="eventType">the parent event type</param> /// <param name="viewList">the list of data window views</param> public IntersectAsymetricView( AgentInstanceViewFactoryChainContext agentInstanceViewFactoryContext, IntersectViewFactory factory, EventType eventType, IList <View> viewList) { _agentInstanceViewFactoryContext = agentInstanceViewFactoryContext; _intersectViewFactory = factory; _eventType = eventType; _views = viewList.ToArray(); _oldEventsPerView = new EventBean[viewList.Count][]; for (int i = 0; i < viewList.Count; i++) { var view = new LastPostObserverView(i); _views[i].RemoveAllViews(); _views[i].AddView(view); view.Observer = this; } }
/// <summary> /// Ctor. /// </summary> /// <param name="agentInstanceViewFactoryContext">The agent instance view factory context.</param> /// <param name="factory">the view factory</param> /// <param name="eventType">the parent event type</param> /// <param name="viewList">the list of data window views</param> /// <param name="viewFactories">view factories</param> /// <param name="hasAsymetric">if set to <c>true</c> [has asymetric].</param> public IntersectBatchView( AgentInstanceViewFactoryChainContext agentInstanceViewFactoryContext, IntersectViewFactory factory, EventType eventType, IList <View> viewList, IList <ViewFactory> viewFactories, bool hasAsymetric) { _agentInstanceViewFactoryContext = agentInstanceViewFactoryContext; _intersectViewFactory = factory; _eventType = eventType; _views = viewList.ToArray(); _oldEventsPerView = new EventBean[viewList.Count][]; _newEventsPerView = new EventBean[viewList.Count][]; _hasAsymetric = hasAsymetric; // determine index of batch view _batchViewIndex = -1; for (int i = 0; i < viewFactories.Count; i++) { if (viewFactories[i] is DataWindowBatchingViewFactory) { _batchViewIndex = i; } } if (_batchViewIndex == -1) { throw new IllegalStateException("Failed to find batch data window view"); } for (int i = 0; i < viewList.Count; i++) { var view = new LastPostObserverView(i); _views[i].RemoveAllViews(); _views[i].AddView(view); view.Observer = this; } }