Drizzled Public API Documentation

memcached_stats.cc
00001 /* 
00002  * Copyright (C) 2009, Padraig O'Sullivan
00003  * All rights reserved.
00004  *
00005  * Redistribution and use in source and binary forms, with or without
00006  * modification, are permitted provided that the following conditions are met:
00007  *
00008  *   * Redistributions of source code must retain the above copyright notice,
00009  *     this list of conditions and the following disclaimer.
00010  *   * Redistributions in binary form must reproduce the above copyright notice,
00011  *     this list of conditions and the following disclaimer in the documentation
00012  *     and/or other materials provided with the distribution.
00013  *   * Neither the name of Padraig O'Sullivan nor the names of its contributors
00014  *     may be used to endorse or promote products derived from this software
00015  *     without specific prior written permission.
00016  *
00017  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00018  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00020  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
00021  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00022  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00023  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00024  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00025  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00026  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
00027  * THE POSSIBILITY OF SUCH DAMAGE.
00028  */
00029 
00030 #include <config.h>
00031 #include <drizzled/show.h>
00032 #include <drizzled/gettext.h>
00033 #include <boost/program_options.hpp>
00034 #include <drizzled/module/option_map.h>
00035 #include "stats_table.h"
00036 #include "analysis_table.h"
00037 #include "sysvar_holder.h"
00038 
00039 #include <string>
00040 #include <map>
00041 
00042 namespace po=boost::program_options;
00043 
00044 namespace drizzle_plugin
00045 {
00046 
00047 
00048 /*
00049  * DATA_DICTIONARY tables.
00050  */
00051 static AnalysisTableTool *analysis_table_tool; 
00052 
00053 static StatsTableTool *stats_table_tool;
00054 
00055 /*
00056  * System variable related variables.
00057  */
00058 static std::string sysvar_memcached_servers;
00059 
00066 static int init(drizzled::module::Context &context)
00067 {
00068   const drizzled::module::option_map &vm= context.getOptions();
00069 
00070   /* we are good to go */
00071   stats_table_tool= new StatsTableTool; 
00072   context.add(stats_table_tool);
00073 
00074   analysis_table_tool= new AnalysisTableTool;
00075   context.add(analysis_table_tool);
00076 
00077   context.registerVariable(new sys_var_std_string("servers",
00078                                                   sysvar_memcached_servers));
00079                           
00080   return 0;
00081 }
00082 
00083 static void init_options(drizzled::module::option_context &context)
00084 {
00085   context("servers",
00086           po::value<std::string>()->default_value(""),
00087           _("List of memcached servers."));
00088 }
00089 
00090 } /* namespace drizzle_plugin */
00091 
00092 DRIZZLE_DECLARE_PLUGIN
00093 {
00094   DRIZZLE_VERSION_ID,
00095   "memcached_stats",
00096   "1.0",
00097   "Padraig O'Sullivan",
00098   N_("Memcached Stats as I_S tables"),
00099   PLUGIN_LICENSE_BSD,
00100   drizzle_plugin::init,   /* Plugin Init      */
00101   NULL, /* depends */
00102   drizzle_plugin::init_options    /* config options   */
00103 }
00104 DRIZZLE_DECLARE_PLUGIN_END;