package com.limegroup.gnutella.connection;
import com.limegroup.gnutella.routing.QueryRouteTable;
/**
* Defines the interface to retrieve statistics about
* {@link QueryRouteTable QueryRouteTables} that are sent and retrieved over a
* {@link RoutedConnection}.
*/
public interface ConnectionRoutingStatistics {
/**
* Accessor for the <tt>QueryRouteTable</tt> received along this
* connection. Can be <tt>null</tt> if no query routing table has been
* received yet.
*
* @return the last <tt>QueryRouteTable</tt> received along this
* connection
*/
public QueryRouteTable getQueryRouteTableReceived();
/**
* Accessor for the last QueryRouteTable's percent full.
*/
public double getQueryRouteTablePercentFull();
/**
* Accessor for the last QueryRouteTable's size.
*/
public int getQueryRouteTableSize();
/**
* Accessor for the last QueryRouteTable's Empty Units.
*/
public int getQueryRouteTableEmptyUnits();
/**
* Accessor for the last QueryRouteTable's Units In Use.
*/
public int getQueryRouteTableUnitsInUse();
/**
* Returns the system time that we should next forward a query route table
* along this connection. Only valid if isClientSupernodeConnection() is
* true.
*/
public long getNextQRPForwardTime();
/**
* Increments the next time we should forward query route tables for this
* connection. This depends on whether or not this is a connection to a leaf
* or to an Ultrapeer.
*
* @param curTime the current time in milliseconds, used to calculate the
* next update time
*/
public void incrementNextQRPForwardTime(long curTime);
/**
* Accessor for the query route table associated with this. This is
* guaranteed to be non-null, but it may not yet contain any data.
*
* @return the <tt>QueryRouteTable</tt> instance containing query route
* table data sent along this connection, or <tt>null</tt> if no
* data has yet been sent
*/
public QueryRouteTable getQueryRouteTableSent();
/**
* Mutator for the last query route table that was sent along this
* connection.
*
* @param qrt the last query route table that was sent along this connection
*/
public void setQueryRouteTableSent(QueryRouteTable qrt);
}