View Javadoc

1   // Copyright (C) 2000 - 2006 Philip Aston
2   // All rights reserved.
3   //
4   // This file is part of The Grinder software distribution. Refer to
5   // the file LICENSE which is part of The Grinder distribution for
6   // licensing details. The Grinder distribution is available on the
7   // Internet at http://grinder.sourceforge.net/
8   //
9   // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10  // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11  // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12  // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
13  // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
14  // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
15  // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
16  // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
17  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
18  // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
19  // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
20  // OF THE POSSIBILITY OF SUCH DAMAGE.
21  
22  package net.grinder.statistics;
23  
24  
25  /**
26   * Access to a set of long and double values. Clients can access
27   * individual values using an index object obtained from a {@link
28   * StatisticsIndexMap}.
29   *
30   * @author Philip Aston
31   * @see net.grinder.script.Grinder.ScriptContext#getStatistics
32   */
33  public interface StatisticsSet extends ImmutableStatisticsSet {
34  
35    /**
36     * Reset this StatisticsSet to default values. Allows instance to
37     * be reused.
38     */
39    void reset();
40  
41    /**
42     * Set the value specified by <code>index</code>.
43     *
44     * @param index The index.
45     * @param value The value.
46     */
47    void setValue(StatisticsIndexMap.LongIndex index, long value);
48  
49    /**
50     * Set the value specified by <code>index</code>.
51     *
52     * @param index The index.
53     * @param value The value.
54     */
55    void setValue(StatisticsIndexMap.DoubleIndex index, double value);
56  
57    /**
58     * Add <code>value</code> to the value specified by
59     * <code>index</code>.
60     *
61     * @param index The index.
62     * @param value The value.
63     */
64    void addValue(StatisticsIndexMap.LongIndex index, long value);
65  
66    /**
67     * Add <code>value</code> to the value specified by
68     * <code>index</code>.
69     *
70     * @param index The index.
71     * @param value The value.
72     */
73    void addValue(StatisticsIndexMap.DoubleIndex index, double value);
74  
75    /**
76     * Add sample <code>value</code> to the sample statistic specified by
77     * <code>index</code>.
78     *
79     * @param index The index.
80     * @param value The value.
81     */
82    void addSample(StatisticsIndexMap.LongSampleIndex index, long value);
83  
84    /**
85     * Add sample <code>value</code> to the sample statistic specified by
86     * <code>index</code>.
87     *
88     * @param index The index.
89     * @param value The value.
90     */
91    void addSample(StatisticsIndexMap.DoubleSampleIndex index, double value);
92  
93    /**
94     * Reset the sample statistic specified by <code>index</code>.
95     *
96     * @param index Index of sample statistic.
97     */
98    void reset(StatisticsIndexMap.LongSampleIndex index);
99  
100   /**
101    * Reset the sample statistic specified by <code>index</code>.
102    *
103    * @param index Index of sample statistic.
104    */
105   void reset(StatisticsIndexMap.DoubleSampleIndex index);
106 
107   /**
108    * Add the values of another {@link StatisticsSet} to ours.
109    * Assumes we don't need to synchronise access to operand.
110    * @param operand The {@link StatisticsSet} value to add.
111    */
112   void add(ImmutableStatisticsSet operand);
113 
114   /**
115    * Marked this statistics set as containing composite statistics.
116    */
117   void setIsComposite();
118 }