public class LogicModule<AGENT extends IAgent> extends AgentModule<AGENT>
Modifier and Type | Field and Description |
---|---|
protected long |
lastLogicRun |
protected IAgentLogic |
logic |
protected Throwable |
logicException |
protected double |
logicFrequency |
protected cz.cuni.amis.utils.flag.Flag<Boolean> |
logicPaused |
protected double |
logicPeriod |
protected cz.cuni.amis.utils.flag.Flag<Boolean> |
logicRunning |
protected cz.cuni.amis.utils.flag.Flag<Boolean> |
logicShouldPause |
protected boolean |
logicShouldRun |
protected Thread |
logicThread |
static double |
MAX_LOGIC_FREQUENCY
Must be greater than 0.
|
static long |
MAX_LOGIC_PERIOD_MILLIS
Must be greater than 0.
|
static double |
MIN_LOGIC_FREQUENCY
Must be greater than 0.
|
static long |
MIN_LOGIC_PERIOD_MILLIS
Must be greater than 0.
|
protected Object |
mutex |
agent, controller, eventBus, log
Constructor and Description |
---|
LogicModule(AGENT agent,
IAgentLogic logic) |
LogicModule(AGENT agent,
IAgentLogic logic,
Logger log) |
LogicModule(AGENT agent,
IAgentLogic logic,
Logger log,
ComponentDependencies dependencies) |
Modifier and Type | Method and Description |
---|---|
protected void |
afterLogic(String threadName)
Called right after the
logic .doLogic() is called. |
protected void |
afterLogicException(String threadName,
Throwable e)
Called whenever some exception is thrown inside
LogicRunner . |
protected void |
beforeLogic(String threadName)
Called right before the
logic .doLogic() is called. |
Throwable |
getLogicException() |
double |
getLogicFrequency() |
double |
getLogicPeriod() |
protected void |
inThreadKilling() |
protected void |
inThreadPausing() |
protected void |
inThreadResuming() |
protected void |
inThreadStopping() |
protected void |
kill()
Kills the agent module.
|
protected void |
logicLatch(String threadName)
Called before the
IAgentLogic.logic() is periodically called - allows you to sleep the logic until the rest of the agent is ready. |
protected void |
pause()
Pauses the agent module.
|
protected void |
resume()
Resumes the agent module.
|
void |
setLogicFrequency(double frequency) |
void |
setMaxLogicFrequency() |
void |
setMinLogicFrequency() |
protected boolean |
shouldExecuteLogic()
Controls whether the
logic .logic() will be called. |
protected void |
start(boolean startPaused)
Starts the agent module.
|
void |
stop()
Stops the agent module.
|
cleanUp, getComponentId, getLog, getState, initComponentId, isRunning, reset, toString
public static final long MIN_LOGIC_PERIOD_MILLIS
public static final double MAX_LOGIC_FREQUENCY
public static final long MAX_LOGIC_PERIOD_MILLIS
public static final double MIN_LOGIC_FREQUENCY
protected Object mutex
protected IAgentLogic logic
protected Thread logicThread
protected boolean logicShouldRun
protected cz.cuni.amis.utils.flag.Flag<Boolean> logicRunning
protected cz.cuni.amis.utils.flag.Flag<Boolean> logicShouldPause
protected cz.cuni.amis.utils.flag.Flag<Boolean> logicPaused
protected double logicFrequency
protected double logicPeriod
protected long lastLogicRun
protected Throwable logicException
@Inject public LogicModule(AGENT agent, IAgentLogic logic)
public LogicModule(AGENT agent, IAgentLogic logic, Logger log)
public LogicModule(AGENT agent, IAgentLogic logic, Logger log, ComponentDependencies dependencies)
protected void start(boolean startPaused) throws AgentException
AgentModule
start
in class AgentModule<AGENT extends IAgent>
AgentException
public void stop()
AgentModule
Calls AgentModule.cleanUp()
.
stop
in class AgentModule<AGENT extends IAgent>
protected void kill()
AgentModule
Calls AgentModule.cleanUp()
.
kill
in class AgentModule<AGENT extends IAgent>
protected void pause()
AgentModule
pause
in class AgentModule<AGENT extends IAgent>
protected void resume()
AgentModule
resume
in class AgentModule<AGENT extends IAgent>
protected void inThreadStopping()
protected void inThreadKilling()
protected void inThreadPausing()
protected void inThreadResuming()
protected void beforeLogic(String threadName)
logic
.doLogic() is called.protected void afterLogic(String threadName)
logic
.doLogic() is called.protected void afterLogicException(String threadName, Throwable e)
LogicRunner
.e
- protected boolean shouldExecuteLogic()
logic
.logic() will be called.
If logic is running & is not paused you may use this to fine control the moments when the logic should execute.
Returns 'true' as default.
protected void logicLatch(String threadName)
IAgentLogic.logic()
is periodically called - allows you to sleep the logic until the rest of the agent is ready.public double getLogicPeriod()
public Throwable getLogicException()
public double getLogicFrequency()
public void setMinLogicFrequency()
public void setMaxLogicFrequency()
public void setLogicFrequency(double frequency)
Copyright © 2012 AMIS research group, Faculty of Mathematics and Physics, Charles University in Prague, Czech Republic. All Rights Reserved.