package com.limegroup.gnutella.statistics; /** * This class contains a type-safe enumeration of all classes that * store statistics on routed queries. */ public class RoutedQueryStat extends AdvancedStatistic { /** * Constructs a new <tt>RoutedQueryStat</tt> instance, ensuring * that no other class can construct one. */ private RoutedQueryStat() {} /** * Private class for recording statistics for routed queries * that should also be counted in all Ultrapeer queries. */ private static class UltrapeerQueryOutgoingStat extends RoutedQueryStat { /** * Overridden to also increment to statistic for all routed * Ultrapeer queries potentially sent (maybe sent or maybe * not, depending on matches in the QRP tables). */ public void incrementStat() { super.incrementStat(); ALL_OUTGOING_ULTRAPEER_QUERIES.incrementStat(); } } /** * Private class for recording statistics for routed queries * that should also be counted in all leaf queries. */ private static class LeafQueryOutgoingStat extends RoutedQueryStat { /** * Overridden to also increment to statistic for all routed * Ultrapeer queries potentially sent (maybe sent or maybe * not, depending on matches in the QRP tables). */ public void incrementStat() { super.incrementStat(); ALL_OUTGOING_LEAF_QUERIES.incrementStat(); } } /** * Private class for recording statistics for * incoming routed queries. */ private static class LeafQueryIncomingStat extends RoutedQueryStat { /** * Overridden to also increment to statistic for all routed * Ultrapeer queries potentially sent (maybe sent or maybe * not, depending on matches in the QRP tables). */ public void incrementStat() { super.incrementStat(); ALL_INCOMING_LEAF_QUERIES.incrementStat(); } } /** * <tt>RoutedQueryStat</tt> for all queries potentially routed to * Ultrapeers. */ public static final RoutedQueryStat ALL_OUTGOING_ULTRAPEER_QUERIES = new RoutedQueryStat(); /** * <tt>RoutedQueryStat</tt> for all queries potentially routed to * leaves. */ public static final RoutedQueryStat ALL_OUTGOING_LEAF_QUERIES = new RoutedQueryStat(); /** * <tt>RoutedQueryStat</tt> for all incoming routed queries. */ public static final RoutedQueryStat ALL_INCOMING_LEAF_QUERIES = new RoutedQueryStat(); /** * <tt>RoutedQueryStat</tt> for queries that are forwarded to other * QRP Ultrapeers (match in the QRP tables). */ public static final RoutedQueryStat ULTRAPEER_SEND = new UltrapeerQueryOutgoingStat(); /** * <tt>RoutedQueryStat</tt> for queries that are dropped before being * sent to other Ultrapeers (no match in the QRP tables). */ public static final RoutedQueryStat ULTRAPEER_DROP = new UltrapeerQueryOutgoingStat(); /** * <tt>RoutedQueryStat</tt> for queries that are forwarded to other * QRP leaves (match in the QRP tables). */ public static final RoutedQueryStat LEAF_SEND = new LeafQueryOutgoingStat(); /** * <tt>RoutedQueryStat</tt> for queries that are dropped before being * sent to other leaves (no match in the QRP tables). */ public static final RoutedQueryStat LEAF_DROP = new LeafQueryOutgoingStat(); /** * <tt>RoutedQueryStat</tt> for incoming routed queries that are false * positives. */ public static final RoutedQueryStat LEAF_FALSE_POSITIVE = new LeafQueryIncomingStat(); /** * <tt>RoutedQueryStat</tt> for incoming routed queries that are * hits. */ public static final RoutedQueryStat LEAF_HIT = new LeafQueryIncomingStat(); }