private void doFlush(EtmPoint[] aCurrent, int aLength) { synchronized (delegate) { Iterator it = nonCollectable.iterator(); while(it.hasNext()) { EtmPoint point = (EtmPoint) it.next(); if (point.isCollectable()) { delegate.add(point); it.remove(); } } for (int i = 0; i < aLength; i++) { EtmPoint point = aCurrent[i]; if (point.isCollectable()) { delegate.add(point); } else { nonCollectable.add(point); } } context.fireEvent(new AggregationFinishedEvent(this)); } }
public void flush() { int length; EtmPoint[] current; synchronized (this) { length = currentPos; current = buffer; buffer = new EtmPoint[current.length]; currentPos = 0; } synchronized (delegate) { Iterator it = nonCollectable.iterator(); while(it.hasNext()) { EtmPoint point = (EtmPoint) it.next(); if (point.isCollectable()) { delegate.add(point); it.remove(); } } for (int i = 0; i < length; i++) { EtmPoint point = current[i]; if (point.isCollectable()) { delegate.add(point); } else { nonCollectable.add(point); } } ctx.fireEvent(new AggregationFinishedEvent(this)); } }