~drizzle-trunk/drizzle/development

2069.4.4 by Brian Aker
Create a shared form of the instance which is a bit more heavier weight then
1
/* - mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 *
4
 *  Copyright (C) 2011 Brian Aker
5
 *
6
 *  This program is free software; you can redistribute it and/or modify
7
 *  it under the terms of the GNU General Public License as published by
8
 *  the Free Software Foundation; either version 2 of the License, or
9
 *  (at your option) any later version.
10
 *
11
 *  This program is distributed in the hope that it will be useful,
12
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 *  GNU General Public License for more details.
15
 *
16
 *  You should have received a copy of the GNU General Public License
17
 *  along with this program; if not, write to the Free Software
18
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
 */
20
21
2234 by Brian Aker
Mass removal of ifdef/endif in favor of pragma once.
22
#pragma once
2069.4.4 by Brian Aker
Create a shared form of the instance which is a bit more heavier weight then
23
24
#include <drizzled/table/instance/base.h>
25
2252.1.21 by Olaf van der Spek
Common fwd
26
namespace drizzled {
27
namespace table {
28
namespace instance {
2069.4.4 by Brian Aker
Create a shared form of the instance which is a bit more heavier weight then
29
30
void release(TableShare *share);
31
void release(TableShare::shared_ptr &share);
2087.4.2 by Brian Aker
Modify TableIdentifier to fit with the rest of the identifiers.
32
void release(const identifier::Table &identifier);
2069.4.4 by Brian Aker
Create a shared form of the instance which is a bit more heavier weight then
33
34
35
class Shared : public drizzled::TableShare
36
{
37
  friend void release(TableShare *share);
38
  friend void release(TableShare::shared_ptr &share);
39
40
public:
41
  typedef boost::shared_ptr<Shared> shared_ptr;
42
  typedef std::vector <shared_ptr> vector;
43
2087.4.2 by Brian Aker
Modify TableIdentifier to fit with the rest of the identifiers.
44
  Shared(const identifier::Table::Type type_arg,
45
         const identifier::Table &identifier,
2069.4.4 by Brian Aker
Create a shared form of the instance which is a bit more heavier weight then
46
         char *path_arg= NULL, uint32_t path_length_arg= 0); // Shares for cache
47
2187.7.5 by Brian Aker
Merge in modifications such that we check both schema and table for
48
  Shared(const identifier::Table &identifier, message::schema::shared_ptr schema_message);
49
2087.4.2 by Brian Aker
Modify TableIdentifier to fit with the rest of the identifiers.
50
  Shared(const identifier::Table &identifier); // Used by placeholder
2069.4.4 by Brian Aker
Create a shared form of the instance which is a bit more heavier weight then
51
52
  ~Shared();
53
54
55
  void lock()
56
  {
57
    mutex.lock();
58
  }
59
60
  void unlock()
61
  {
62
    mutex.unlock();
63
  }
64
65
  static shared_ptr make_shared(Session *session, 
2087.4.2 by Brian Aker
Modify TableIdentifier to fit with the rest of the identifiers.
66
                                const identifier::Table &identifier,
2069.4.4 by Brian Aker
Create a shared form of the instance which is a bit more heavier weight then
67
                                int &in_error);
68
69
  static shared_ptr foundTableShare(shared_ptr share);
2134.1.10 by Brian Aker
Move out event so that we don't incur it when using temp/internal tables.
70
71
  plugin::EventObserverList *getTableObservers() 
72
  { 
73
    return event_observers;
74
  }
75
76
  void setTableObservers(plugin::EventObserverList *observers) 
77
  { 
78
    event_observers= observers;
79
  }
80
2187.7.5 by Brian Aker
Merge in modifications such that we check both schema and table for
81
  virtual bool is_replicated() const;
2168.3.2 by Brian Aker
CREATE TABLE/SCHEMA now allow you to add REPLICATION to the list of items
82
2134.1.10 by Brian Aker
Move out event so that we don't incur it when using temp/internal tables.
83
private:
84
  boost::mutex mutex;                /* For locking the share  */
2187.7.5 by Brian Aker
Merge in modifications such that we check both schema and table for
85
  drizzled::message::schema::shared_ptr _schema;
2134.1.10 by Brian Aker
Move out event so that we don't incur it when using temp/internal tables.
86
87
  /* 
88
    event_observers is a class containing all the event plugins that have 
89
    registered an interest in this table.
90
  */
91
  plugin::EventObserverList *event_observers;
92
2069.4.4 by Brian Aker
Create a shared form of the instance which is a bit more heavier weight then
93
};
94
95
} /* namespace instance */
96
} /* namespace table */
97
} /* namespace drizzled */
98