public abstract class EventDrivenSharedWorldView extends AbstractSharedWorldView
BatchAwareSharedWorldView
)Modifier and Type | Field and Description |
---|---|
protected PriorityBlockingQueue<IWorldChangeEvent> |
notifyEventsList
List of events we have to process.
|
protected boolean |
receiveEventProcessing
Flag that is telling us whether there is an event being processed or not.
|
protected Collection<IWorldChangeEvent> |
syncEventList |
static String |
WORLDVIEW_DEPENDENCY |
COMPONENT_ID, control, controller, currentSharedProperties, idClassMap, localWorldViews, log, sharedProperties, sharedWorldObjects, staticWorldObjects, syncCurrentSharedProperties, syncIdClassMap, syncSharedProperties, syncSharedWorldObjects
Constructor and Description |
---|
EventDrivenSharedWorldView(Logger logger) |
Modifier and Type | Method and Description |
---|---|
void |
addMsgClass(WorldObjectId id,
Class msgClass) |
protected void |
innerNotify(IWorldChangeEvent event)
Used to process IWorldChangeEvent - it has to be either IWorldChangeEvent or IWorldObjectUpdateEvent.
|
void |
notify(IWorldChangeEvent event) |
protected void |
objectCreated(ISharedWorldObject obj,
long time)
Must be called whenever an object was created, raises correct events.
|
protected void |
objectDestroyed(IWorldObject obj,
long time)
Must be called whenever an object was destroyed - raises correct events.
|
protected void |
objectUpdated(ITeamId teamId,
WorldObjectId objectId,
long time)
Must be called whenever an object was updated - raises correct event.
|
protected void |
propertyCreated(ISharedProperty property,
ITeamId team)
If team is null, the property will be created for all teams.
|
protected void |
propertyUpdated(ISharedProperty property,
ITeamId team)
Updates the property.
|
protected void |
propertyUpdatedEvent(ISharedPropertyUpdatedEvent event)
MUST NOT BE CALLED CONCURRENTLY - SINGLE THREAD AT THIS POINT ONLY! MUST BE ENFORCED FROM THE OUTSIDE!
|
protected void |
raiseEvent(IWorldEvent event)
Catches exceptions.
|
protected void |
sharedObjectUpdatedEvent(ISharedWorldObjectUpdatedEvent updateEvent)
Called from
EventDrivenWorldView.innerNotify(IWorldChangeEvent) if the event is IWorldObjectUpdatedEvent
to process it. |
protected void |
staticObjectUpdatedEvent(IStaticWorldObjectUpdatedEvent event)
Manages updating static objects,
only possible event types are CREATED and DESTROYED, any other event type raises an exception.
|
addComponentBus, addEventListener, addObjectListener, addObjectListener, addObjectListener, addObjectListener, addOldSharedProperty, addSharedProperty, addSharedProperty, addSharedWorldObject, addStaticWorldObject, cleanUp, createSharedObject, getComponentId, getShared, getSharedProperties, getSharedProperty, getStatic, isListening, isListening, isListening, isListening, isListening, isListening, isPaused, isRunning, kill, pause, prePause, preStop, registerLocalWorldView, removeComponentBus, removeEventListener, removeListener, removeObjectListener, removeObjectListener, removeObjectListener, removeObjectListener, removeSharedProperty, removeSharedProperty, removeStaticWorldObject, removeStaticWorldObject, reset, resume, start, stop
public static final String WORLDVIEW_DEPENDENCY
protected boolean receiveEventProcessing
It is managed only by notify() method - DO NOT MODIFY OUTSIDE IT!
protected PriorityBlockingQueue<IWorldChangeEvent> notifyEventsList
It is managed only by notify() method - DO NOT MODIFY OUTSIDE IT!
protected Collection<IWorldChangeEvent> syncEventList
public EventDrivenSharedWorldView(Logger logger)
public void notify(IWorldChangeEvent event) throws ComponentNotRunningException, ComponentPausedException
protected void innerNotify(IWorldChangeEvent event)
DO NOT CALL SEPARATELY - should be called only from notifyEvent().
You may override it to provide event-specific processing behavior.
MUST NOT BE CALLED CONCURRENTLY - SINGLE THREAD AT THIS POINT ONLY! MUST BE ENFORCED FROM THE OUTSIDE!
event
- protected void raiseEvent(IWorldEvent event)
ComponentController
.fatalError() and this.kill().raiseEvent
in class AbstractSharedWorldView
public void addMsgClass(WorldObjectId id, Class msgClass)
protected void sharedObjectUpdatedEvent(ISharedWorldObjectUpdatedEvent updateEvent)
EventDrivenWorldView.innerNotify(IWorldChangeEvent)
if the event is IWorldObjectUpdatedEvent
to process it.
MUST NOT BE CALLED CONCURRENTLY - SINGLE THREAD AT THIS POINT ONLY! MUST BE ENFORCED FROM THE OUTSIDE!
updateEvent
- protected void propertyUpdatedEvent(ISharedPropertyUpdatedEvent event)
event
- protected void staticObjectUpdatedEvent(IStaticWorldObjectUpdatedEvent event)
MUST NOT BE CALLED CONCURRENTLY - SINGLE THREAD AT THIS POINT ONLY! MUST BE ENFORCED FROM THE OUTSIDE!
event
- protected void propertyCreated(ISharedProperty property, ITeamId team)
MUST NOT BE CALLED CONCURRENTLY - SINGLE THREAD AT THIS POINT ONLY! MUST BE ENFORCED FROM THE OUTSIDE!
property
- team
- protected void propertyUpdated(ISharedProperty property, ITeamId team)
MUST NOT BE CALLED CONCURRENTLY - SINGLE THREAD AT THIS POINT ONLY! MUST BE ENFORCED FROM THE OUTSIDE!
property
- team
- protected void objectCreated(ISharedWorldObject obj, long time)
Might be overridden to provide different behavior.
MUST NOT BE CALLED CONCURRENTLY - SINGLE THREAD AT THIS POINT ONLY! MUST BE ENFORCED FROM THE OUTSIDE!
obj
- protected void objectUpdated(ITeamId teamId, WorldObjectId objectId, long time)
Might be overridden to provide a mechanism that will forbid update of certain objects (like items that can't move).
MUST NOT BE CALLED CONCURRENTLY - SINGLE THREAD AT THIS POINT ONLY! MUST BE ENFORCED FROM THE OUTSIDE!
obj
- protected void objectDestroyed(IWorldObject obj, long time)
Might be overriden to provide different behavior.
MUST NOT BE CALLED CONCURRENTLY - SINGLE THREAD AT THIS POINT ONLY! MUST BE ENFORCED FROM THE OUTSIDE!
obj
- Copyright © 2012 AMIS research group, Faculty of Mathematics and Physics, Charles University in Prague, Czech Republic. All Rights Reserved.