cz.cuni.amis.pogamut.ut2004.communication.worldview
Class UT2004LockableWorldView

java.lang.Object
  extended by cz.cuni.amis.pogamut.base.communication.worldview.impl.AbstractWorldView
      extended by cz.cuni.amis.pogamut.base.communication.worldview.impl.EventDrivenWorldView
          extended by cz.cuni.amis.pogamut.base3d.worldview.impl.VisionWorldView
              extended by cz.cuni.amis.pogamut.base3d.worldview.impl.BatchAwareWorldView
                  extended by cz.cuni.amis.pogamut.ut2004.communication.worldview.UT2004WorldView
                      extended by cz.cuni.amis.pogamut.ut2004.communication.worldview.UT2004LockableWorldView
All Implemented Interfaces:
ILockableWorldView, IWorldChangeEventInput, IWorldView, IComponent, ILockableVisionWorldView, IVisionWorldView

public class UT2004LockableWorldView
extends UT2004WorldView
implements ILockableVisionWorldView

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().

The world view is unlocked from the beginning.

All those locking mechanisms start working when the first BEGIN message comes.


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
UT2004LockableWorldView(ComponentDependencies dependencies, IMediator mediator, IComponentBus bus, IAgentLogger log)
           
 
Method Summary
 boolean hasBatchesToProcess()
           
 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.
 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, prePause, preStop, removeEventListener, removeListener, removeObjectListener, removeObjectListener, removeObjectListener, removeObjectListener, removeWorldObject, reset, resume, start, stop, 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

WORLDVIEW_DEPENDENCY

public static final java.lang.String WORLDVIEW_DEPENDENCY
See Also:
Constant Field Values
Constructor Detail

UT2004LockableWorldView

@Inject
public UT2004LockableWorldView(ComponentDependencies dependencies,
                                      IMediator mediator,
                                      IComponentBus bus,
                                      IAgentLogger log)
Method Detail

lock

public void lock()
          throws ComponentNotRunningException
When the world view is locked - no batches are processes until unlocked.

Specified by:
lock in interface ILockableWorldView
Throws:
ComponentNotRunningException

unlock

public void unlock()
            throws ComponentNotRunningException
Unlocks the world view - triggers processing of all events till the last EndMessage that came between lock() / unlock() calls.

Specified by:
unlock in interface ILockableWorldView
Throws:
ComponentNotRunningException

isLocked

public boolean isLocked()
Description copied from interface: ILockableWorldView
Whether the worldview is locked.

Specified by:
isLocked in interface ILockableWorldView
Returns:

hasBatchesToProcess

public boolean hasBatchesToProcess()

notify

public void notify(IWorldChangeEvent event)
Implements locking logic.

Specified by:
notify in interface IWorldChangeEventInput
Overrides:
notify in class BatchAwareWorldView