~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/memcached_stats/stats_table.cc

Add Solaris atomics fixes and test files. Add replication.h header to makefile.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 * Copyright (C) 2009, Padraig O'Sullivan
 
2
 * Copyright (c) 2009, Padraig O'Sullivan
3
3
 * All rights reserved.
4
4
 *
5
5
 * Redistribution and use in source and binary forms, with or without
30
30
#include "config.h"
31
31
 
32
32
#include "stats_table.h"
 
33
#include "sysvar_holder.h"
33
34
 
34
35
#include "drizzled/error.h"
35
 
#include <libmemcached/server.h>
 
36
 
 
37
using namespace std;
 
38
using namespace drizzled;
36
39
 
37
40
#if !defined(HAVE_MEMCACHED_SERVER_FN)
38
41
typedef memcached_server_function memcached_server_fn;
39
42
#endif
40
43
 
41
 
namespace drizzle_plugin
42
 
{
43
 
 
44
44
extern "C"
45
45
memcached_return  server_function(const memcached_st *ptr,
46
46
                                  memcached_server_st *server,
47
47
                                  void *context);
48
48
 
 
49
 
49
50
struct server_function_context
50
51
{
51
52
  StatsTableTool::Generator* generator; 
62
63
{
63
64
  server_function_context *ctx= static_cast<server_function_context *>(context);
64
65
 
65
 
  const char *server_name= memcached_server_name(*memc, *server);
66
 
  in_port_t server_port= memcached_server_port(*memc, *server);
 
66
  char *server_name= memcached_server_name(memc, *server);
 
67
  in_port_t server_port= memcached_server_port(memc, *server);
67
68
 
68
69
  memcached_stat_st stats;
69
70
  memcached_return ret= memcached_stat_servername(&stats, NULL,
123
124
}
124
125
 
125
126
 
126
 
StatsTableTool::Generator::Generator(drizzled::Field **arg) :
 
127
StatsTableTool::Generator::Generator(Field **arg) :
127
128
  plugin::TableFunction::Generator(arg)
128
129
{
129
130
  /* This will be set to the real number if we initialize properly below */
134
135
  /* set to NULL if we are not able to init we dont want to call delete on this */
135
136
  memc= NULL;
136
137
 
137
 
  drizzled::sys_var *servers_var= drizzled::find_sys_var("memcached_stats_servers");
138
 
  assert(servers_var != NULL);
139
 
 
140
 
  const string servers_string(static_cast<char *>(servers_var.value_ptr(NULL, 0, NULL)));
 
138
  SysvarHolder &sysvar_holder= SysvarHolder::singleton();
 
139
  const string servers_string= sysvar_holder.getServersString();
141
140
 
142
141
  if (servers_string.empty())
143
142
  {
185
184
 
186
185
  server_function_context context(this);
187
186
 
188
 
  memcached_server_function callbacks[1];
 
187
  memcached_server_fn callbacks[1];
189
188
  callbacks[0]= server_function;
190
189
 
191
190
  unsigned int iferror; 
200
199
 
201
200
  return true;
202
201
}
203
 
 
204
 
} /* namespace drizzle_plugin */