org.jactr.modules.pm.common.afferent
Class DefaultAfferentObjectListener

java.lang.Object
  extended by org.jactr.modules.pm.common.afferent.DefaultAfferentObjectListener
All Implemented Interfaces:
java.lang.Runnable, org.commonreality.event.ICommonRealityListener, org.commonreality.object.manager.event.IAfferentListener, org.commonreality.object.manager.event.IObjectListener<org.commonreality.object.IAfferentObject>
Direct Known Subclasses:
DelayableAfferentObjectListener

public class DefaultAfferentObjectListener
extends java.lang.Object
implements org.commonreality.object.manager.event.IAfferentListener, java.lang.Runnable

default afferent listener that instead of routing events directly, queues them up and then posts a process event to handle the events. This way, if afferent events are coming faster than the listener can actually process them, they get queued so that only the most recent update needs to be processed

Author:
developer

Constructor Summary
DefaultAfferentObjectListener(org.commonreality.agents.IAgent agent, java.util.concurrent.Executor executor)
           
 
Method Summary
 void add(IAfferentObjectListener encoder)
           
 double getLastChangeTime()
           
 int getPendingUpdates()
          number of updates queued
 void objectsAdded(org.commonreality.object.manager.event.IObjectEvent<org.commonreality.object.IAfferentObject,?> addEvent)
           
 void objectsRemoved(org.commonreality.object.manager.event.IObjectEvent<org.commonreality.object.IAfferentObject,?> removeEvent)
           
 void objectsUpdated(org.commonreality.object.manager.event.IObjectEvent<org.commonreality.object.IAfferentObject,?> updateEvent)
           
 void processExistingObjects()
           
 void remove(IAfferentObjectListener encoder)
           
 void run()
          actually process the new adds, updates, and removes
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultAfferentObjectListener

public DefaultAfferentObjectListener(org.commonreality.agents.IAgent agent,
                                     java.util.concurrent.Executor executor)
Method Detail

add

public void add(IAfferentObjectListener encoder)

remove

public void remove(IAfferentObjectListener encoder)

processExistingObjects

public void processExistingObjects()

run

public final void run()
actually process the new adds, updates, and removes

Specified by:
run in interface java.lang.Runnable

getPendingUpdates

public int getPendingUpdates()
number of updates queued

Returns:

getLastChangeTime

public double getLastChangeTime()

objectsAdded

public void objectsAdded(org.commonreality.object.manager.event.IObjectEvent<org.commonreality.object.IAfferentObject,?> addEvent)
Specified by:
objectsAdded in interface org.commonreality.object.manager.event.IObjectListener<org.commonreality.object.IAfferentObject>
See Also:
IObjectListener.objectsAdded(org.commonreality.object.manager.event.IObjectEvent)

objectsRemoved

public void objectsRemoved(org.commonreality.object.manager.event.IObjectEvent<org.commonreality.object.IAfferentObject,?> removeEvent)
Specified by:
objectsRemoved in interface org.commonreality.object.manager.event.IObjectListener<org.commonreality.object.IAfferentObject>
See Also:
IObjectListener.objectsRemoved(org.commonreality.object.manager.event.IObjectEvent)

objectsUpdated

public void objectsUpdated(org.commonreality.object.manager.event.IObjectEvent<org.commonreality.object.IAfferentObject,?> updateEvent)
Specified by:
objectsUpdated in interface org.commonreality.object.manager.event.IObjectListener<org.commonreality.object.IAfferentObject>
See Also:
IObjectListener.objectsUpdated(org.commonreality.object.manager.event.IObjectEvent)