|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object cz.cuni.amis.pogamut.base.communication.worldview.impl.AbstractWorldView cz.cuni.amis.pogamut.base.communication.worldview.impl.EventDrivenWorldView cz.cuni.amis.pogamut.base3d.worldview.impl.VisionWorldView cz.cuni.amis.pogamut.base3d.worldview.impl.BatchAwareWorldView cz.cuni.amis.pogamut.ut2004.communication.worldview.UT2004WorldView cz.cuni.amis.pogamut.ut2004.communication.worldview.UT2004SyncLockableWorldView
public class UT2004SyncLockableWorldView
Lockable word view.
Contains GameBots2004 correct locking of the worldview.
All messages are processed always in batches (all messages between EndMessages are one batch) meaning that the world view is always correct!
When worldview is lock()ed it postpones the events until unlock()ed, which is triggering raising all events that came from the lock().
lock() method here blocks until the END message of the batch is hit, then the world view is considered to be fully locked and let the lock() continue. You may use it to create correct sync bot. (just lock() the world view before your logic and unlock() the world view after the logic finishes)
The world view is unlocked from the beginning.
The locking mechanism starts to work with the first BeginMessage. (To let all other events to be processed automatically during the handshake.)
, Jimmy
UT2004LockableWorldView
Field Summary | |
---|---|
static String |
WORLDVIEW_DEPENDENCY
|
Fields inherited from class cz.cuni.amis.pogamut.base3d.worldview.impl.BatchAwareWorldView |
---|
currentObjectBatch, lastObjectBatch |
Fields inherited from class cz.cuni.amis.pogamut.base.communication.worldview.impl.EventDrivenWorldView |
---|
notifyEventsList, receiveEventProcessing |
Fields inherited from class cz.cuni.amis.pogamut.base.communication.worldview.impl.AbstractWorldView |
---|
COMPONENT_ID, control, controller, eventBus, log |
Constructor Summary | |
---|---|
UT2004SyncLockableWorldView(ComponentDependencies dependencies,
IMediator mediator,
IComponentBus bus,
IAgentLogger log)
|
Method Summary | |
---|---|
boolean |
isInLock()
|
boolean |
isLocked()
|
void |
lock()
When the world view is locked - no batches are processes until unlocked. |
void |
notify(IWorldChangeEvent event)
Implements locking logic. |
protected void |
prePause()
|
protected void |
preStop()
|
protected void |
resume()
|
protected void |
start(boolean startPaused)
|
protected void |
stop()
|
void |
unlock()
Unlocks the world view - triggers processing of all events till the last EndMessage that came between lock() / unlock() calls. |
Methods inherited from class cz.cuni.amis.pogamut.ut2004.communication.worldview.UT2004WorldView |
---|
isBatchBeginEvent, isBatchEndEvent, setDisappearedFlag |
Methods inherited from class cz.cuni.amis.pogamut.base3d.worldview.impl.BatchAwareWorldView |
---|
batchAwareWorldViewNotify, hasObjectsToProcess, notifyImmediately, objectAppeared, objectDisappeared |
Methods inherited from class cz.cuni.amis.pogamut.base3d.worldview.impl.VisionWorldView |
---|
addVisibleObject, cleanUp, getAllVisible, getAllVisible, getVisible, getVisible, objectCreated, objectDestroyed, objectUpdatedEvent, removeVisibleObject |
Methods inherited from class cz.cuni.amis.pogamut.base.communication.worldview.impl.EventDrivenWorldView |
---|
innerNotify, notifyAfterPropagation, objectUpdated, raiseEvent |
Methods inherited from class cz.cuni.amis.pogamut.base.communication.worldview.impl.AbstractWorldView |
---|
addEventListener, addObjectListener, addObjectListener, addObjectListener, addObjectListener, addWorldObject, get, get, get, getAll, getAll, getComponentId, getEventBus, getLog, getSingle, isListening, isListening, isListening, isListening, isListening, isListening, isPaused, isRunning, kill, pause, removeEventListener, removeListener, removeObjectListener, removeObjectListener, removeObjectListener, removeObjectListener, removeWorldObject, reset, toString |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface cz.cuni.amis.pogamut.base3d.worldview.IVisionWorldView |
---|
getAllVisible, getAllVisible, getVisible, getVisible |
Methods inherited from interface cz.cuni.amis.pogamut.base.communication.worldview.IWorldView |
---|
addEventListener, addObjectListener, addObjectListener, addObjectListener, addObjectListener, get, get, get, getAll, getAll, getEventBus, getSingle, isListening, isListening, isListening, isListening, isListening, isListening, removeEventListener, removeListener, removeObjectListener, removeObjectListener, removeObjectListener, removeObjectListener |
Methods inherited from interface cz.cuni.amis.pogamut.base.communication.worldview.IWorldChangeEventInput |
---|
notifyAfterPropagation, notifyImmediately |
Methods inherited from interface cz.cuni.amis.pogamut.base.component.IComponent |
---|
getComponentId |
Field Detail |
---|
public static final String WORLDVIEW_DEPENDENCY
Constructor Detail |
---|
@Inject public UT2004SyncLockableWorldView(ComponentDependencies dependencies, IMediator mediator, IComponentBus bus, IAgentLogger log)
Method Detail |
---|
public void lock() throws cz.cuni.amis.utils.exception.PogamutInterruptedException, ComponentNotRunningException
lock
in interface ILockableWorldView
cz.cuni.amis.utils.exception.PogamutInterruptedException
ComponentNotRunningException
public void unlock() throws ComponentNotRunningException
unlock
in interface ILockableWorldView
ComponentNotRunningException
public boolean isLocked()
isLocked
in interface ILockableWorldView
public boolean isInLock()
public void notify(IWorldChangeEvent event)
notify
in interface IWorldChangeEventInput
notify
in class BatchAwareWorldView
protected void start(boolean startPaused)
start
in class AbstractWorldView
protected void preStop()
preStop
in class AbstractWorldView
protected void prePause()
prePause
in class AbstractWorldView
protected void resume()
resume
in class AbstractWorldView
protected void stop()
stop
in class AbstractWorldView
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |