Drizzled Public API Documentation

scoreboard.h
1 /*
2  * Copyright (C) 2010 Joseph Daly <skinny.moey@gmail.com>
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  * * Neither the name of Joseph Daly nor the names of its contributors
14  * may be used to endorse or promote products derived from this software
15  * without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
27  * THE POSSIBILITY OF SUCH DAMAGE.
28  *
29  */
30 
31 #pragma once
32 
33 #include "scoreboard_slot.h"
34 #include <boost/thread/shared_mutex.hpp>
35 
36 #include <vector>
37 
39 {
40 public:
41  Scoreboard(uint32_t in_number_sessions, uint32_t in_number_buckets);
42 
43  ~Scoreboard();
44 
56 
64 
65  uint32_t getBucketNumber(drizzled::Session*) const;
66 
67  uint32_t getNumberBuckets() const
68  {
69  return number_buckets;
70  }
71 
72  uint32_t getNumberPerBucket() const
73  {
74  return number_per_bucket;
75  }
76 
77  uint64_t getScoreboardSizeBytes() const
78  {
79  return scoreboard_size_bytes;
80  }
81 
82  std::vector<boost::shared_mutex* >* getVectorOfScoreboardLocks()
83  {
84  return &vector_of_scoreboard_locks;
85  }
86 
87  std::vector<std::vector<ScoreboardSlot* >* >* getVectorOfScoreboardVectors()
88  {
89  return &vector_of_scoreboard_vectors;
90  }
91 
92 private:
93  uint32_t number_sessions;
94  uint32_t number_per_bucket;
95  uint32_t number_buckets;
96  uint64_t scoreboard_size_bytes;
97  std::vector<std::vector<ScoreboardSlot*>*> vector_of_scoreboard_vectors;
98  std::vector<boost::shared_mutex*> vector_of_scoreboard_locks;
99 
100  ScoreboardSlot* claimOpenScoreboardSlot(drizzled::Session *session);
101 };
102