~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/status_helper.cc

mergeĀ lp:~hingo/drizzle/drizzle-auth_ldap-fix-and-docs

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
3
 *
4
 
 *  Copyright (C) 2008 Sun Microsystems
 
4
 *  Copyright (C) 2008 Sun Microsystems, Inc.
5
5
 *  Copyright (C) 2010 Joseph Daly 
6
6
 *
7
7
 *  This program is free software; you can redistribute it and/or modify
18
18
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
19
 */
20
20
 
21
 
#include "config.h"
 
21
#include <config.h>
 
22
#include "status_helper.h"
22
23
#include <boost/lexical_cast.hpp>
23
 
#include "status_helper.h"
24
 
#include "drizzled/set_var.h"
25
 
#include "drizzled/drizzled.h"
26
 
#include "plugin/myisam/myisam.h"
27
 
 
 
24
#include <drizzled/open_tables_state.h>
 
25
#include <drizzled/set_var.h>
 
26
#include <drizzled/drizzled.h>
 
27
#include <plugin/myisam/myisam.h>
28
28
#include <sstream>
29
29
 
30
30
using namespace std;
31
31
 
32
 
namespace drizzled
33
 
{
 
32
namespace drizzled {
34
33
 
35
 
extern uint64_t refresh_version;
36
34
extern time_t server_start_time;
37
35
extern time_t flush_status_time;
38
36
 
66
64
 
67
65
static st_show_var_func_container show_connection_count_cont_new= { &show_connection_count_new };
68
66
 
69
 
string StatusHelper::fillHelper(system_status_var *status_var, char *value, SHOW_TYPE show_type)
 
67
string StatusHelper::fillHelper(system_status_var *status_var, const char *value, SHOW_TYPE show_type)
70
68
{
71
69
  ostringstream oss;
72
 
  string return_value;
73
 
 
74
 
  switch (show_type) {
 
70
  switch (show_type) 
 
71
  {
75
72
  case SHOW_DOUBLE_STATUS:
76
73
    value= ((char *) status_var + (ulong) value);
77
74
    /* fall through */
78
75
  case SHOW_DOUBLE:
79
76
    oss.precision(6);
80
77
    oss << *(double *) value;
81
 
    return_value= oss.str();
82
 
    break;
 
78
    return oss.str();
83
79
  case SHOW_LONG_STATUS:
84
80
    value= ((char *) status_var + (ulong) value);
85
81
    /* fall through */
86
82
  case SHOW_LONG:
87
 
    return_value=boost::lexical_cast<std::string>(*(long*) value);
 
83
    return boost::lexical_cast<std::string>(*(long*) value);
88
84
    break;
89
85
  case SHOW_LONGLONG_STATUS:
90
86
    value= ((char *) status_var + (uint64_t) value);
91
87
    /* fall through */
92
88
  case SHOW_LONGLONG:
93
 
    return_value=boost::lexical_cast<std::string>(*(int64_t*) value);
94
 
    break;
 
89
    return boost::lexical_cast<std::string>(*(int64_t*) value);
95
90
  case SHOW_SIZE:
96
 
    return_value=boost::lexical_cast<std::string>(*(size_t*) value);
97
 
    break;
 
91
    return boost::lexical_cast<std::string>(*(size_t*) value);
98
92
  case SHOW_HA_ROWS:
99
 
    return_value=boost::lexical_cast<std::string>((int64_t) *(ha_rows*) value);
100
 
    break;
 
93
    return boost::lexical_cast<std::string>((int64_t) *(ha_rows*) value);
101
94
  case SHOW_BOOL:
102
95
  case SHOW_MY_BOOL:
103
 
    return_value= *(bool*) value ? "ON" : "OFF";
104
 
    break;
 
96
    return *(bool*) value ? "ON" : "OFF";
105
97
  case SHOW_INT:
106
98
  case SHOW_INT_NOFLUSH: // the difference lies in refresh_status()
107
 
    return_value=boost::lexical_cast<std::string>((long) *(uint32_t*) value);
108
 
    break;
 
99
    return boost::lexical_cast<std::string>((long) *(uint32_t*) value);
109
100
  case SHOW_CHAR:
110
 
    {
111
 
      if (value)
112
 
        return_value= value;
113
 
      break;
114
 
    }
 
101
    if (value)
 
102
      return value;
 
103
    break;
115
104
  case SHOW_CHAR_PTR:
116
 
    {
117
 
      if (*(char**) value)
118
 
        return_value= *(char**) value;
119
 
 
120
 
      break;
121
 
    }
 
105
    if (*(char**) value)
 
106
      return *(char**) value;
 
107
    break;
122
108
  case SHOW_UNDEF:
123
109
    break;                                        // Return empty string
124
110
  case SHOW_SYS:                                  // Cannot happen
125
111
  default:
126
112
    assert(0);
127
 
    break;
128
113
  }
129
 
 
130
 
  return return_value;
 
114
  return string();
131
115
}
132
116
 
133
117
drizzle_show_var StatusHelper::status_vars_defs[]=
139
123
  {"Connections",               (char*) &current_global_counters.connections,  SHOW_LONGLONG},
140
124
  {"Created_tmp_disk_tables",   (char*) offsetof(system_status_var, created_tmp_disk_tables), SHOW_LONGLONG_STATUS},
141
125
  {"Created_tmp_tables",        (char*) offsetof(system_status_var, created_tmp_tables), SHOW_LONGLONG_STATUS},
142
 
  {"Flush_commands",            (char*) &refresh_version,    SHOW_INT_NOFLUSH},
 
126
  {"Flush_commands",            (char*) &g_refresh_version, SHOW_INT_NOFLUSH},
143
127
  {"Handler_commit",            (char*) offsetof(system_status_var, ha_commit_count), SHOW_LONGLONG_STATUS},
144
128
  {"Handler_delete",            (char*) offsetof(system_status_var, ha_delete_count), SHOW_LONGLONG_STATUS},
145
129
  {"Handler_prepare",           (char*) offsetof(system_status_var, ha_prepare_count),  SHOW_LONGLONG_STATUS},