30
30
#ifndef PLUGIN_LOGGING_STATS_LOGGING_STATS_H
31
31
#define PLUGIN_LOGGING_STATS_LOGGING_STATS_H
33
#include "score_board_slot.h"
33
#include "scoreboard_slot.h"
34
#include "user_commands.h"
35
#include "scoreboard.h"
35
36
#include <drizzled/atomics.h>
36
37
#include <drizzled/enum.h>
37
38
#include <drizzled/session.h>
38
39
#include <drizzled/plugin/logging.h>
42
extern pthread_rwlock_t LOCK_scoreboard;
44
extern pthread_rwlock_t LOCK_current_scoreboard_vector;
44
46
class LoggingStats: public drizzled::plugin::Logging
71
uint32_t getScoreBoardSize()
73
return scoreboard_size;
76
ScoreBoardSlot *getScoreBoardSlots()
78
return score_board_slots;
73
Scoreboard *getCurrentScoreboard()
75
return current_scoreboard;
78
std::vector<ScoreboardSlot* > *getCumulativeStatsByUserVector()
80
return cumulative_stats_by_user_vector;
83
uint32_t getCumulativeStatsByUserIndex()
85
return cumulative_stats_by_user_index;
82
89
static const int32_t UNINITIALIZED= -1;
91
std::vector<ScoreboardSlot* > *cumulative_stats_by_user_vector;
93
uint32_t cumulative_stats_by_user_max;
95
uint32_t cumulative_stats_by_user_index;
97
Scoreboard *current_scoreboard;
84
99
bool isBeingLogged(drizzled::Session *session);
86
void updateScoreBoard(ScoreBoardSlot *score_board_slot, drizzled::Session *session);
101
void updateCurrentScoreboard(ScoreboardSlot *scoreboard_slot, drizzled::Session *session);
103
void updateCumulativeStatsByUserVector(ScoreboardSlot *current_scoreboard_slot);
105
void preAllocateScoreboardSlotVector(uint32_t size,
106
std::vector<ScoreboardSlot *> *scoreboard_slot_vector);
108
void deleteScoreboardSlotVector(std::vector<ScoreboardSlot *> *scoreboard_slot_vector);
88
110
drizzled::atomic<bool> is_enabled;
90
ScoreBoardSlot *score_board_slots;
92
uint32_t scoreboard_size;
94
113
#endif /* PLUGIN_LOGGING_STATS_LOGGING_STATS_H */