00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #pragma once
00031
00032 #include "scoreboard_slot.h"
00033 #include "cumulative_stats.h"
00034 #include "scoreboard.h"
00035
00036 #include <drizzled/atomics.h>
00037 #include <drizzled/enum.h>
00038 #include <drizzled/plugin/logging.h>
00039
00040 #include <string>
00041 #include <vector>
00042
00043 class LoggingStats: public drizzled::plugin::Logging
00044 {
00045 public:
00046
00047 LoggingStats(std::string name_arg);
00048
00049 ~LoggingStats();
00050
00051 virtual bool post(drizzled::Session *session);
00052
00053 virtual bool postEnd(drizzled::Session *session);
00054
00055 virtual bool resetGlobalScoreboard();
00056
00057 bool isEnabled() const
00058 {
00059 return is_enabled;
00060 }
00061
00062 void enable()
00063 {
00064 is_enabled= true;
00065 }
00066
00067 void disable()
00068 {
00069 is_enabled= false;
00070 }
00071
00072 Scoreboard *getCurrentScoreboard()
00073 {
00074 return current_scoreboard;
00075 }
00076
00077 CumulativeStats *getCumulativeStats()
00078 {
00079 return cumulative_stats;
00080 }
00081
00082 private:
00083 Scoreboard *current_scoreboard;
00084
00085 CumulativeStats *cumulative_stats;
00086
00087 drizzled::atomic<bool> is_enabled;
00088
00089 void updateCurrentScoreboard(ScoreboardSlot *scoreboard_slot, drizzled::Session *session);
00090
00091 typedef std::vector<std::vector<ScoreboardSlot* >* > ScoreBoardVectors;
00092 };