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
00031 #pragma once
00032
00033 #include "scoreboard_slot.h"
00034 #include <boost/thread/shared_mutex.hpp>
00035
00036 #include <vector>
00037
00038 class Scoreboard
00039 {
00040 public:
00041 Scoreboard(uint32_t in_number_sessions, uint32_t in_number_buckets);
00042
00043 ~Scoreboard();
00044
00055 ScoreboardSlot* findScoreboardSlotToLog(drizzled::Session *session);
00056
00063 ScoreboardSlot* findOurScoreboardSlot(drizzled::Session *session);
00064
00065 uint32_t getBucketNumber(drizzled::Session *session);
00066
00067 uint32_t getNumberBuckets()
00068 {
00069 return number_buckets;
00070 }
00071
00072 uint32_t getNumberPerBucket()
00073 {
00074 return number_per_bucket;
00075 }
00076
00077 uint64_t getScoreboardSizeBytes()
00078 {
00079 return scoreboard_size_bytes;
00080 }
00081
00082 std::vector<boost::shared_mutex* >* getVectorOfScoreboardLocks()
00083 {
00084 return &vector_of_scoreboard_locks;
00085 }
00086
00087 std::vector<std::vector<ScoreboardSlot* >* >* getVectorOfScoreboardVectors()
00088 {
00089 return &vector_of_scoreboard_vectors;
00090 }
00091
00092 private:
00093 uint32_t number_sessions;
00094 uint32_t number_per_bucket;
00095 uint32_t number_buckets;
00096 uint64_t scoreboard_size_bytes;
00097 std::vector<std::vector<ScoreboardSlot* >* > vector_of_scoreboard_vectors;
00098 std::vector<boost::shared_mutex* > vector_of_scoreboard_locks;
00099
00100 ScoreboardSlot* claimOpenScoreboardSlot(drizzled::Session *session);
00101 };
00102