~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/memcached_stats/memcached_stats.cc

Updated an include guard thanks to a nice catch during code review from Jay. Thanks Jay!

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
 * THE POSSIBILITY OF SUCH DAMAGE.
28
28
 */
29
29
 
30
 
#include "config.h"
 
30
#include "drizzled/server_includes.h"
31
31
#include "drizzled/show.h"
32
32
#include "drizzled/gettext.h"
 
33
#include "drizzled/plugin/info_schema_table.h"
33
34
 
34
35
#include "stats_table.h"
35
36
#include "analysis_table.h"
42
43
using namespace drizzled;
43
44
 
44
45
/*
45
 
 * DATA_DICTIONARY tables.
46
 
 */
47
 
static AnalysisTableTool *analysis_table_tool; 
48
 
 
49
 
static StatsTableTool *stats_table_tool;
 
46
 * Vectors of columns for I_S tables.
 
47
 */
 
48
static vector<const plugin::ColumnInfo *> memcached_stats_columns;
 
49
static vector<const plugin::ColumnInfo *> memcached_analysis_columns;
 
50
 
 
51
/*
 
52
 * Methods for I_S tables.
 
53
 */
 
54
static plugin::InfoSchemaMethods *memcached_stats_methods= NULL;
 
55
static plugin::InfoSchemaMethods *memcached_analysis_methods= NULL;
 
56
 
 
57
/*
 
58
 * I_S tables.
 
59
 */
 
60
static plugin::InfoSchemaTable *memcached_stats_table= NULL;
 
61
static plugin::InfoSchemaTable *memcached_analysis_table= NULL;
50
62
 
51
63
/*
52
64
 * System variable related variables.
54
66
static char *sysvar_memcached_servers= NULL;
55
67
 
56
68
/**
 
69
 * Populate the vectors of columns for each I_S table.
 
70
 *
 
71
 * @return false on success; true on failure.
 
72
 */
 
73
static bool initColumns()
 
74
{
 
75
  if (createMemcachedStatsColumns(memcached_stats_columns))
 
76
  {
 
77
    return true;
 
78
  }
 
79
 
 
80
  if (createMemcachedAnalysisColumns(memcached_analysis_columns))
 
81
  {
 
82
    return true;
 
83
  }
 
84
 
 
85
  return false;
 
86
}
 
87
 
 
88
/**
 
89
 * Clear the vectors of columns for each I_S table.
 
90
 */
 
91
static void cleanupColumns()
 
92
{
 
93
  clearMemcachedColumns(memcached_stats_columns);
 
94
  clearMemcachedColumns(memcached_analysis_columns);
 
95
}
 
96
 
 
97
/**
 
98
 * Initialize the methods for each I_S table.
 
99
 *
 
100
 * @return false on success; true on failure
 
101
 */
 
102
static bool initMethods()
 
103
{
 
104
  memcached_stats_methods= new(std::nothrow) 
 
105
    MemcachedStatsISMethods();
 
106
  if (! memcached_stats_methods)
 
107
  {
 
108
    return true;
 
109
  }
 
110
 
 
111
  memcached_analysis_methods= new(std::nothrow) 
 
112
    MemcachedAnalysisISMethods();
 
113
  if (! memcached_analysis_methods)
 
114
  {
 
115
    return true;
 
116
  }
 
117
 
 
118
  return false;
 
119
}
 
120
 
 
121
/**
 
122
 * Delete memory allocated for the I_S table methods.
 
123
 */
 
124
static void cleanupMethods()
 
125
{
 
126
  delete memcached_stats_methods;
 
127
  delete memcached_analysis_methods;
 
128
}
 
129
 
 
130
/**
 
131
 * Initialize the I_S tables related to memcached.
 
132
 *
 
133
 * @return false on success; true on failure
 
134
 */
 
135
static bool initMemcachedTables()
 
136
{
 
137
  memcached_stats_table= new(std::nothrow) plugin::InfoSchemaTable("MEMCACHED_STATS",
 
138
                                                           memcached_stats_columns,
 
139
                                                           -1, -1, false, false, 0,
 
140
                                                           memcached_stats_methods);
 
141
  if (! memcached_stats_table)
 
142
  {
 
143
    return true;
 
144
  }
 
145
 
 
146
  memcached_analysis_table= 
 
147
    new(std::nothrow) plugin::InfoSchemaTable("MEMCACHED_ANALYSIS",
 
148
                                      memcached_analysis_columns,
 
149
                                      -1, -1, false, false, 0,
 
150
                                      memcached_analysis_methods);
 
151
  if (! memcached_analysis_table)
 
152
  {
 
153
    return true;
 
154
  }
 
155
 
 
156
  return false;
 
157
}
 
158
 
 
159
/**
 
160
 * Delete memory allocated for the I_S tables.
 
161
 */
 
162
static void cleanupMemcachedTables()
 
163
{
 
164
  delete memcached_stats_table;
 
165
  delete memcached_analysis_table;
 
166
}
 
167
 
 
168
/**
57
169
 * Initialize the memcached stats plugin.
58
170
 *
59
171
 * @param[in] registry the drizzled::plugin::Registry singleton
60
172
 * @return false on success; true on failure.
61
173
 */
62
 
static int init(plugin::Context &context)
 
174
static int init(plugin::Registry &registry)
63
175
{
 
176
  if (initMethods())
 
177
  {
 
178
    return 1;
 
179
  }
 
180
 
 
181
  if (initColumns())
 
182
  {
 
183
    return 1;
 
184
  }
 
185
 
 
186
  if (initMemcachedTables())
 
187
  {
 
188
    return 1;
 
189
  }
64
190
 
65
191
  SysvarHolder &sysvar_holder= SysvarHolder::singleton();
66
192
  sysvar_holder.setServersString(sysvar_memcached_servers);
67
193
 
68
194
  /* we are good to go */
69
 
  stats_table_tool= new(std::nothrow)StatsTableTool; 
70
 
  context.add(stats_table_tool);
71
 
 
72
 
  analysis_table_tool= new(std::nothrow)AnalysisTableTool;
73
 
  context.add(analysis_table_tool);
 
195
  registry.add(memcached_stats_table);
 
196
  registry.add(memcached_analysis_table);
 
197
 
 
198
  return 0;
 
199
}
 
200
 
 
201
/**
 
202
 * Clean up the memcached stats plugin.
 
203
 *
 
204
 * @param[in] registry the drizzled::plugin::Registry singleton
 
205
 * @return false on success; true on failure
 
206
 */
 
207
static int deinit(plugin::Registry &registry)
 
208
{
 
209
  registry.remove(memcached_stats_table);
 
210
  registry.remove(memcached_analysis_table);
 
211
 
 
212
  cleanupMethods();
 
213
  cleanupColumns();
 
214
  cleanupMemcachedTables();
74
215
 
75
216
  return 0;
76
217
}
124
265
 
125
266
DRIZZLE_DECLARE_PLUGIN
126
267
{
127
 
  DRIZZLE_VERSION_ID,
128
268
  "memcached_stats",
129
269
  "1.0",
130
270
  "Padraig O'Sullivan",
131
271
  N_("Memcached Stats as I_S tables"),
132
272
  PLUGIN_LICENSE_BSD,
133
273
  init,   /* Plugin Init      */
 
274
  deinit, /* Plugin Deinit    */
 
275
  NULL,   /* status variables */
134
276
  system_variables, /* system variables */
135
277
  NULL    /* config options   */
136
278
}