1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef NET_DISK_CACHE_STATS_H_
6 #define NET_DISK_CACHE_STATS_H_
11 #include "base/basictypes.h"
12 #include "net/disk_cache/addr.h"
13 #include "net/disk_cache/stats_histogram.h"
16 class HistogramSamples
;
19 namespace disk_cache
{
21 typedef std::vector
<std::pair
<std::string
, std::string
> > StatsItems
;
23 // This class stores cache-specific usage information, for tunning purposes.
26 static const int kDataSizesLength
= 28;
29 OPEN_MISS
= MIN_COUNTER
,
39 OPEN_ENTRIES
, // Average number of open entries.
40 MAX_ENTRIES
, // Maximum number of open entries.
44 OPEN_RANKINGS
, // An entry has to be read just to modify rankings.
45 GET_RANKINGS
, // We got the ranking info without reading the whole entry.
47 LAST_REPORT
, // Time of the last time we sent a report.
48 LAST_REPORT_TIMER
, // Timer count of the last time we sent a report.
49 DOOM_RECENT
, // The cache was partially cleared.
50 UNUSED
, // Was: ga.js was evicted from the cache.
57 // Initializes this object with |data| from disk.
58 bool Init(void* data
, int num_bytes
, Addr address
);
60 // Generates a size distribution histogram.
61 void InitSizeHistogram();
63 // Returns the number of bytes needed to store the stats on disk.
66 // Tracks changes to the stoage space used by an entry.
67 void ModifyStorageStats(int32 old_size
, int32 new_size
);
69 // Tracks general events.
70 void OnEvent(Counters an_event
);
71 void SetCounter(Counters counter
, int64 value
);
72 int64
GetCounter(Counters counter
) const;
74 void GetItems(StatsItems
* items
);
75 int GetHitRatio() const;
76 int GetResurrectRatio() const;
79 // Returns the lower bound of the space used by entries bigger than 512 KB.
80 int GetLargeEntriesSize();
82 // Writes the stats into |data|, to be stored at the given cache address.
83 // Returns the number of bytes copied.
84 int SerializeStats(void* data
, int num_bytes
, Addr
* address
);
86 // Support for StatsHistograms. Together, these methods allow StatsHistograms
87 // to take a snapshot of the data_sizes_ as the histogram data.
88 int GetBucketRange(size_t i
) const;
89 void Snapshot(base::HistogramSamples
* samples
) const;
92 int GetStatsBucket(int32 size
);
93 int GetRatio(Counters hit
, Counters miss
) const;
96 int data_sizes_
[kDataSizesLength
];
97 int64 counters_
[MAX_COUNTER
];
98 StatsHistogram
* size_histogram_
;
100 DISALLOW_COPY_AND_ASSIGN(Stats
);
103 } // namespace disk_cache
105 #endif // NET_DISK_CACHE_STATS_H_