gps.protocol.BT.algorithm
Class BTAlgorithmReChoking

java.lang.Object
  extended by gps.protocol.BT.algorithm.BTAlgorithmReChoking
All Implemented Interfaces:
SimEventHandler

public class BTAlgorithmReChoking
extends java.lang.Object
implements SimEventHandler

BT Rechoking algorithm. Choking is based on session rather than node. i.e. it considers only connections for that file Choking algorithm should meet several criteria: It should cap the number of simultaneous uploads for good TCP performance. It should avoid choking and unchoking quickly, known as 'fibrillation' It should reciprocate to peers who let it download. It should try out unused connections once in a while to find out a better one, i.e. optimistic unchoking.

Version:
1.2, 6/20/2005
Author:
Weishuai Yang

Field Summary
static int DEFAULT_RECHOKING_INTERVAL
          default rechoking interval
static int DEFAULT_UNCHOKE_NUMBER
          default peer number that each session can unchoke
 
Constructor Summary
BTAlgorithmReChoking(BTSession session)
          constructs rechoking object
BTAlgorithmReChoking(BTSession session, int n, int i)
          chonstructs rechoking object with unchoke number and unchoke interveral set
 
Method Summary
 int getUnchokeNum()
          gets unchoke num set for this simulation
 boolean handle(SimEvent e)
          handles rechoking events
 boolean isRunning()
          check running status
 void nextSchedule()
          sets up next rechoking event
 void run()
          starts rechoking
 java.lang.String toString()
          gets string description
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DEFAULT_UNCHOKE_NUMBER

public static final int DEFAULT_UNCHOKE_NUMBER
default peer number that each session can unchoke

See Also:
Constant Field Values

DEFAULT_RECHOKING_INTERVAL

public static final int DEFAULT_RECHOKING_INTERVAL
default rechoking interval

See Also:
Constant Field Values
Constructor Detail

BTAlgorithmReChoking

public BTAlgorithmReChoking(BTSession session)
constructs rechoking object

Parameters:
session - bt session this unchoking is working for

BTAlgorithmReChoking

public BTAlgorithmReChoking(BTSession session,
                            int n,
                            int i)
chonstructs rechoking object with unchoke number and unchoke interveral set

Parameters:
session - bt session this unchoking is working for
n - unchoke number
i - unchoke intervel
Method Detail

isRunning

public boolean isRunning()
check running status

Returns:
true if running

run

public void run()
starts rechoking


getUnchokeNum

public int getUnchokeNum()
gets unchoke num set for this simulation

Returns:
allowed unchok numer

handle

public boolean handle(SimEvent e)
handles rechoking events

Specified by:
handle in interface SimEventHandler
Parameters:
e - rechoking event
Returns:
true if already handled

nextSchedule

public void nextSchedule()
sets up next rechoking event


toString

public java.lang.String toString()
gets string description

Overrides:
toString in class java.lang.Object
Returns:
string description