package org.jactr.modules.pm.visual.timedevent;
/*
* default logging
*/
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jactr.core.buffer.IActivationBuffer;
import org.jactr.core.chunk.IChunk;
import org.jactr.core.logging.Logger;
import org.jactr.core.model.IModel;
import org.jactr.core.queue.timedevents.AbstractTimedEvent;
import org.jactr.core.queue.timedevents.IBufferBasedTimedEvent;
import org.jactr.core.runtime.ACTRRuntime;
import org.jactr.modules.pm.visual.buffer.IVisualActivationBuffer;
public class ReencodingTimedEvent extends AbstractTimedEvent implements
IBufferBasedTimedEvent
{
/**
* Logger definition
*/
static private final transient Log LOGGER = LogFactory
.getLog(ReencodingTimedEvent.class);
IChunk _chunk;
IVisualActivationBuffer _buffer;
public ReencodingTimedEvent(IVisualActivationBuffer buffer,
IChunk visualChunk, double reencodingTime)
{
IModel model = buffer.getModel();
double now = ACTRRuntime.getRuntime().getClock(model).getTime();
setTimes(now, now + reencodingTime);
_chunk = visualChunk;
_buffer = buffer;
if (Logger.hasLoggers(model))
Logger.log(model, Logger.Stream.VISUAL, _chunk
+ " has changed, reencoding will complete at " + getEndTime());
/*
* set execution state to busy..
*/
IChunk busy = model.getDeclarativeModule().getBusyChunk();
buffer.setExecutionChunk(busy);
}
public void fire(double currentTime)
{
super.fire(currentTime);
IChunk free = _buffer.getModel().getDeclarativeModule().getFreeChunk();
_buffer.setExecutionChunk(free);
}
public IChunk getBoundChunk()
{
return _chunk;
}
public IActivationBuffer getBuffer()
{
return _buffer;
}
}