package freenet.node.probe;
/**
* Listener for the different types of probe results.
*/
public interface Listener {
/**
* An error occurred.
* @param error type: What error occurred. Can be one of Probe.ProbeError.
* @param code Code byte value. If the error is an UNKNOWN or UNRECOGNIZED_TYPE which occurred locally this
* contains the unrecognized code from the message. Otherwise it is null.
* @param local True if the error occurred locally and was not prompted by an error relayed from a remote node.
* False if the error was relayed from a remote node.
*/
void onError(Error error, Byte code, boolean local);
/**
* Endpoint opted not to respond with the requested information.
*/
void onRefused();
/**
* Output bandwidth limit result.
* @param outputBandwidth endpoint's reported output bandwidth limit in KiB per second.
*/
void onOutputBandwidth(float outputBandwidth);
/**
* Build result.
* @param build endpoint's reported build / main version.
*/
void onBuild(int build);
/**
* Identifier result.
* @param identifier identifier given by endpoint.
* @param uptimePercentage quantized noisy 7-day uptime percentage
*/
void onIdentifier(long identifier, byte uptimePercentage);
/**
* Link length result.
* @param linkLengths endpoint's reported link lengths.
*/
void onLinkLengths(float[] linkLengths);
/**
* Location result.
* @param location location given by endpoint.
*/
void onLocation(float location);
/**
* Store size result.
* @param storeSize endpoint's reported store size in GiB multiplied by Gaussian noise.
*/
void onStoreSize(float storeSize);
/**
* Uptime result.
* @param uptimePercentage endpoint's reported percentage uptime in the last requested period; either
* 48 hour or 7 days.
*/
void onUptime(float uptimePercentage);
/**
* Reject stats.
* @param stats Array of 4 bytes, with the percentage rejections for (bulk only): CHK request,
* SSK request, CHK insert, SSK insert. Negative value = insufficient data. Positive value =
* percentage rejected.
*/
void onRejectStats(byte[] stats);
/** Capacity usage and approximate bandwidth class */
void onOverallBulkOutputCapacity(byte bandwidthClassForCapacityUsage, float capacityUsage);
}