monotone

monotone Mtn Source Tree

Root/src/cache_logger.cc

1// Copyright (C) 2010 and later by various people
2// see monotone commit logs for details and authors
3//
4// This program is made available under the GNU GPL version 2.0 or
5// greater. See the accompanying file COPYING for details.
6//
7// This program is distributed WITHOUT ANY WARRANTY; without even the
8// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9// PURPOSE.
10
11#include "base.hh"
12#include "cache_logger.hh"
13
14#include <fstream>
15
16using std::ofstream;
17using std::endl;
18using std::string;
19
20class cache_logger_impl
21{
22public:
23 ofstream stream;
24
25 explicit cache_logger_impl(string const & filename)
26 : stream(filename.c_str())
27 { }
28};
29
30cache_logger::cache_logger(string const & filename, int max_size)
31 : max_size(max_size)
32{
33 if (!filename.empty())
34 {
35 _impl.reset(new cache_logger_impl(filename));
36 }
37}
38
39void cache_logger::log_exists(bool exists, int position,
40 int item_count, int est_size) const
41{
42 if (_impl)
43 {
44 _impl->stream << "Exists: " << (exists?"ok":"missing")
45 << "; position: " << position
46 << "; count: " << item_count
47 << "; size: " << est_size << " of " << max_size
48 << endl;
49 }
50}
51
52void cache_logger::log_touch(bool exists, int position,
53 int item_count, int est_size) const
54{
55 if (_impl)
56 {
57 _impl->stream << "Touch: " << (exists?"ok":"missing")
58 << "; position: " << position
59 << "; count: " << item_count
60 << "; size: " << est_size << " of " << max_size
61 << endl;
62 }
63}
64
65void cache_logger::log_fetch(bool exists, int position,
66 int item_count, int est_size) const
67{
68 if (_impl)
69 {
70 _impl->stream << "Fetch: " << (exists?"ok":"missing")
71 << "; position: " << position
72 << "; count: " << item_count
73 << "; size: " << est_size << " of " << max_size
74 << endl;
75 }
76}
77
78void cache_logger::log_insert(int items_removed,
79 int item_count, int est_size) const
80{
81 if (_impl)
82 {
83 _impl->stream << "Insert... "
84 << " dropped items: " << items_removed
85 << "; count: " << item_count
86 << "; size: " << est_size << " of " << max_size
87 << endl;
88 }
89}
90
91// Local Variables:
92// mode: C++
93// fill-column: 76
94// c-file-style: "gnu"
95// indent-tabs-mode: nil
96// End:
97// vim: et:sw=2:sts=2:ts=2:cino=>2s,{s,\:s,+s,t0,g0,^-2,e-2,n-2,p2s,(0,=s:

Archive Download this file

Branches

Tags

Quick Links:     www.monotone.ca    -     Downloads    -     Documentation    -     Wiki    -     Code Forge    -     Build Status