|
|||||||||
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.)
UT2004LockableWorldView
Field Summary | |
---|---|
static java.lang.String |
WORLDVIEW_DEPENDENCY
|
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()
Whether the worldview is locked. |
void |
lock()
When the world view is locked - no batches are processes until unlocked. |
void |
notify(IWorldChangeEvent event)
Implements locking logic. |
protected void |
prePause()
Pre-pauses the world view. |
protected void |
preStop()
Pre-stops the world view. |
protected void |
resume()
Resumes the world view. |
protected void |
start(boolean startPaused)
Starts the world view. |
protected void |
stop()
Stops the world view. |
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, objectUpdated, raiseEvent |
Methods inherited from class cz.cuni.amis.pogamut.base.communication.worldview.impl.AbstractWorldView |
---|
addEventListener, addObjectListener, addObjectListener, addObjectListener, addObjectListener, addWorldObject, 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, 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 |
---|
notifyImmediately |
Methods inherited from interface cz.cuni.amis.pogamut.base.component.IComponent |
---|
getComponentId |
Field Detail |
---|
public static final java.lang.String WORLDVIEW_DEPENDENCY
Constructor Detail |
---|
@Inject public UT2004SyncLockableWorldView(ComponentDependencies dependencies, IMediator mediator, IComponentBus bus, IAgentLogger log)
Method Detail |
---|
public void lock() throws PogamutInterruptedException, ComponentNotRunningException
lock
in interface ILockableWorldView
PogamutInterruptedException
ComponentNotRunningException
public void unlock() throws ComponentNotRunningException
unlock
in interface ILockableWorldView
ComponentNotRunningException
public boolean isLocked()
ILockableWorldView
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)
AbstractWorldView
If you override this method, do not forget to call super.start().
start
in class AbstractWorldView
protected void preStop()
AbstractWorldView
If you override this method, do not forget to call super.preStop().
preStop
in class AbstractWorldView
protected void prePause()
AbstractWorldView
If you override this method, do not forget to call super.preStop().
prePause
in class AbstractWorldView
protected void resume()
AbstractWorldView
If you override this method, do not forget to call super.start().
resume
in class AbstractWorldView
protected void stop()
AbstractWorldView
If you override this method, do not forget to call super.stop().
stop
in class AbstractWorldView
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |