+++ /dev/null
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-
-#ifndef DETAILEDSTATCOLLECTERH
-#define DETAILEDSTATCOLLECTERH
-
-#include "stat_collector.h"
-#include "common/Formatter.h"
-#include <boost/scoped_ptr.hpp>
-#include "common/Mutex.h"
-#include "common/Cond.h"
-#include "include/utime.h"
-#include <list>
-#include <map>
-#include <boost/tuple/tuple.hpp>
-#include <ostream>
-
-class DetailedStatCollector : public StatCollector {
-public:
- class AdditionalPrinting {
- public:
- virtual void operator()(std::ostream *) = 0;
- virtual ~AdditionalPrinting() {}
- };
-private:
- struct Op {
- string type;
- utime_t start;
- double latency;
- uint64_t size;
- uint64_t seq;
- Op(
- string type,
- utime_t start,
- double latency,
- uint64_t size,
- uint64_t seq)
- : type(type), start(start), latency(latency),
- size(size), seq(seq) {}
- void dump(ostream *out, Formatter *f);
- };
- class Aggregator {
- uint64_t recent_size;
- uint64_t total_size;
- double recent_latency;
- double total_latency;
- utime_t last;
- utime_t first;
- uint64_t recent_ops;
- uint64_t total_ops;
- bool started;
- public:
- Aggregator();
-
- void add(const Op &op);
- void dump(Formatter *f);
- };
- const double bin_size;
- boost::scoped_ptr<Formatter> f;
- ostream *out;
- ostream *summary_out;
- boost::scoped_ptr<AdditionalPrinting> details;
- utime_t last_dump;
-
- Mutex lock;
- Cond cond;
-
- map<string, Aggregator> aggregators;
-
- map<uint64_t, pair<uint64_t, utime_t> > not_applied;
- map<uint64_t, pair<uint64_t, utime_t> > not_committed;
- map<uint64_t, pair<uint64_t, utime_t> > not_read;
-
- uint64_t cur_seq;
-
- void dump(
- const string &type,
- boost::tuple<utime_t, utime_t, uint64_t, uint64_t> stuff);
-public:
- DetailedStatCollector(
- double bin_size,
- Formatter *formatter,
- ostream *out,
- ostream *summary_out,
- AdditionalPrinting *details = 0
- );
-
- uint64_t next_seq() override;
- void start_write(uint64_t seq, uint64_t size) override;
- void start_read(uint64_t seq, uint64_t size) override;
- void write_applied(uint64_t seq) override;
- void write_committed(uint64_t seq) override;
- void read_complete(uint64_t seq) override;
-
-};
-
-#endif