/* * ************************************************************************************* * Copyright (C) 2008 EsperTech, Inc. All rights reserved. * * http://esper.codehaus.org * * http://www.espertech.com * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the GPL license * * a copy of which has been included with this distribution in the license.txt file. * * ************************************************************************************* */ package com.espertech.esper.support.view; import com.espertech.esper.view.internal.BufferObserver; import com.espertech.esper.collection.FlushedEventBuffer; public class SupportBufferObserver implements BufferObserver { private boolean hasNewData; private int streamId; private FlushedEventBuffer newEventBuffer; private FlushedEventBuffer oldEventBuffer; public boolean getAndResetHasNewData() { boolean result = hasNewData; hasNewData = false; return result; } public void newData(int streamId, FlushedEventBuffer newEventBuffer, FlushedEventBuffer oldEventBuffer) { if (hasNewData == true) { throw new IllegalStateException("Observer already has new data"); } hasNewData = true; this.streamId = streamId; this.newEventBuffer = newEventBuffer; this.oldEventBuffer = oldEventBuffer; } public int getAndResetStreamId() { int id = streamId; streamId = 0; return id; } public FlushedEventBuffer getAndResetNewEventBuffer() { FlushedEventBuffer buf = newEventBuffer; newEventBuffer = null; return buf; } public FlushedEventBuffer getAndResetOldEventBuffer() { FlushedEventBuffer buf = oldEventBuffer; oldEventBuffer = null; return buf; } }