Class ReadController
- java.lang.Object
-
- com.biglybt.core.networkmanager.impl.ReadController
-
- All Implemented Interfaces:
CoreStatsProvider
,AEDiagnosticsEvidenceGenerator
public class ReadController extends java.lang.Object implements CoreStatsProvider, AEDiagnosticsEvidenceGenerator
Processes reads of read-entities and handles the read selector.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static boolean
AGGRESIVE_READ
private AEMonitor
entities_mon
private long
entity_check_count
private int
entity_count
(package private) java.util.ArrayList<RateControlledEntity>
high_priority_entities
(package private) static int
IDLE_SLEEP_TIME
private long
last_entity_check_count
private long
loop_count
private int
next_high_position
private int
next_normal_position
private long
non_progress_count
(package private) java.util.ArrayList<RateControlledEntity>
normal_priority_entities
private long
progress_count
private EventWaiter
read_waiter
private long
wait_count
-
Constructor Summary
Constructors Constructor Description ReadController()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addReadEntity(RateControlledEntity entity)
Add the given entity to the controller for read processing.private boolean
doHighPriorityRead()
private boolean
doNormalPriorityRead()
private boolean
doRead(RateControlledEntity ready_entity)
void
generate(IndentWriter writer)
int
getEntityCount()
private RateControlledEntity
getNextReadyHighPriorityEntity()
private RateControlledEntity
getNextReadyNormalPriorityEntity()
private boolean
hasConnections()
(package private) void
readProcessorLoop()
boolean
removeReadEntity(RateControlledEntity entity)
Remove the given entity from the controller.void
updateStats(java.util.Set types, java.util.Map values)
-
-
-
Field Detail
-
IDLE_SLEEP_TIME
static int IDLE_SLEEP_TIME
-
AGGRESIVE_READ
static boolean AGGRESIVE_READ
-
normal_priority_entities
volatile java.util.ArrayList<RateControlledEntity> normal_priority_entities
-
high_priority_entities
volatile java.util.ArrayList<RateControlledEntity> high_priority_entities
-
entities_mon
private final AEMonitor entities_mon
-
next_normal_position
private int next_normal_position
-
next_high_position
private int next_high_position
-
loop_count
private long loop_count
-
wait_count
private long wait_count
-
non_progress_count
private long non_progress_count
-
progress_count
private long progress_count
-
entity_check_count
private long entity_check_count
-
last_entity_check_count
private long last_entity_check_count
-
read_waiter
private final EventWaiter read_waiter
-
entity_count
private int entity_count
-
-
Method Detail
-
generate
public void generate(IndentWriter writer)
- Specified by:
generate
in interfaceAEDiagnosticsEvidenceGenerator
-
updateStats
public void updateStats(java.util.Set types, java.util.Map values)
- Specified by:
updateStats
in interfaceCoreStatsProvider
-
readProcessorLoop
void readProcessorLoop()
-
hasConnections
private boolean hasConnections()
-
doNormalPriorityRead
private boolean doNormalPriorityRead()
-
doHighPriorityRead
private boolean doHighPriorityRead()
-
doRead
private boolean doRead(RateControlledEntity ready_entity)
-
getNextReadyNormalPriorityEntity
private RateControlledEntity getNextReadyNormalPriorityEntity()
-
getNextReadyHighPriorityEntity
private RateControlledEntity getNextReadyHighPriorityEntity()
-
addReadEntity
public void addReadEntity(RateControlledEntity entity)
Add the given entity to the controller for read processing.- Parameters:
entity
- to process reads for
-
removeReadEntity
public boolean removeReadEntity(RateControlledEntity entity)
Remove the given entity from the controller.- Parameters:
entity
- to remove from read processing
-
getEntityCount
public int getEntityCount()
-
-