1
// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2
// vim: ts=8 sw=2 smarttab
4
* Ceph - scalable distributed file system
6
* Copyright (C) 2004-2006 Sage Weil <sage@newdream.net>
8
* This is free software; you can redistribute it and/or
9
* modify it under the terms of the GNU Lesser General Public
10
* License version 2.1, as published by the Free Software
11
* Foundation. See file COPYING.
16
#ifndef CEPH_LOGTYPE_H
17
#define CEPH_LOGTYPE_H
19
#include "include/types.h"
26
int first_key, num_keys;
27
vector<const char*> key_name;
28
vector<bool> inc_keys, avg_keys;
33
LogType(int first, int tail) :
34
first_key(first), num_keys(tail-first - 1),
35
key_name(num_keys), inc_keys(num_keys), avg_keys(num_keys) {
36
for (int i=0; i<num_keys; i++) {
42
int lookup_key(int key, bool isnew=false) {
43
int i = key - first_key - 1;
44
assert(i >= 0 && i < num_keys);
45
assert(isnew || key_name[i]);
48
void add_key(int key, const char *name, bool is_inc, bool is_avg) {
49
int i = lookup_key(key, true);
50
assert(!key_name[i]); // only register each type once!
55
void add_inc(int key, const char *name) {
56
return add_key(key, name, true, false);
58
void add_set(int key, const char *name) {
59
return add_key(key, name, false, false);
61
void add_avg(int key, const char *name) {
62
return add_key(key, name, true, true);
65
for (int i=0; i<num_keys; i++)