~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/plugin.h

Refactor

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18
18
 */
19
19
 
20
 
#ifndef DRIZZLED_PLUGIN_H
21
 
#define DRIZZLED_PLUGIN_H
 
20
#pragma once
22
21
 
23
22
#include <boost/program_options.hpp>
24
23
#include <boost/filesystem.hpp>
25
24
 
26
 
#include "drizzled/module/manifest.h"
27
 
#include "drizzled/module/module.h"
28
 
#include "drizzled/plugin/version.h"
29
 
#include "drizzled/module/context.h"
30
 
#include "drizzled/definitions.h"
31
 
 
32
 
#include "drizzled/lex_string.h"
33
 
#include "drizzled/sys_var.h"
34
 
#include "drizzled/xid.h"
35
 
 
36
 
namespace drizzled
37
 
{
38
 
 
39
 
class Session;
40
 
class Item;
41
 
struct charset_info_st;
 
25
#include <drizzled/module/manifest.h>
 
26
#include <drizzled/module/module.h>
 
27
#include <drizzled/plugin/version.h>
 
28
#include <drizzled/module/context.h>
 
29
#include <drizzled/definitions.h>
 
30
 
 
31
#include <drizzled/lex_string.h>
 
32
#include <drizzled/sys_var.h>
 
33
 
 
34
#include <drizzled/visibility.h>
 
35
 
 
36
namespace drizzled {
42
37
 
43
38
/*************************************************************************
44
39
  Plugin API. Common for all plugin types.
45
40
*/
46
41
 
47
 
 
48
 
class sys_var;
49
 
typedef drizzle_lex_string LEX_STRING;
50
 
struct option;
51
 
 
52
42
extern boost::filesystem::path plugin_dir;
53
43
 
54
 
namespace plugin { class StorageEngine; }
55
 
 
56
44
/*
57
45
  Macros for beginning and ending plugin declarations. Between
58
46
  DRIZZLE_DECLARE_PLUGIN and DRIZZLE_DECLARE_PLUGIN_END there should
63
51
#define PANDORA_CPP_NAME(x) _drizzled_ ## x ## _plugin_
64
52
#define PANDORA_PLUGIN_NAME(x) PANDORA_CPP_NAME(x)
65
53
#define DRIZZLE_DECLARE_PLUGIN \
66
 
  ::drizzled::module::Manifest PANDORA_PLUGIN_NAME(PANDORA_MODULE_NAME)= 
 
54
  DRIZZLED_API ::drizzled::module::Manifest PANDORA_PLUGIN_NAME(PANDORA_MODULE_NAME)= 
67
55
 
68
56
 
69
57
#define DRIZZLE_DECLARE_PLUGIN_END
76
64
    STRINGIFY_ARG(PANDORA_MODULE_AUTHOR), \
77
65
    STRINGIFY_ARG(PANDORA_MODULE_TITLE), \
78
66
    PANDORA_MODULE_LICENSE, \
79
 
    init, system, options \
 
67
    init, \
 
68
    STRINGIFY_ARG(PANDORA_MODULE_DEPENDENCIES), \
 
69
    options \
80
70
  } 
81
71
 
82
72
 
105
95
 
106
96
/*
107
97
  SYNOPSIS
108
 
    (*mysql_var_check_func)()
 
98
    (*var_check_func)()
109
99
      session               thread handle
110
100
      var               dynamic variable being altered
111
101
      save              pointer to temporary storage
122
112
  automatically at the end of the statement.
123
113
*/
124
114
 
125
 
typedef int (*mysql_var_check_func)(Session *session,
 
115
typedef int (*var_check_func)(Session *session,
126
116
                                    drizzle_sys_var *var,
127
117
                                    void *save, drizzle_value *value);
128
118
 
129
119
/*
130
120
  SYNOPSIS
131
 
    (*mysql_var_update_func)()
 
121
    (*var_update_func)()
132
122
      session               thread handle
133
123
      var               dynamic variable being altered
134
124
      var_ptr           pointer to dynamic variable
140
130
   and persist it in the provided pointer to the dynamic variable.
141
131
   For example, strings may require memory to be allocated.
142
132
*/
143
 
typedef void (*mysql_var_update_func)(Session *session,
 
133
typedef void (*var_update_func)(Session *session,
144
134
                                      drizzle_sys_var *var,
145
135
                                      void *var_ptr, const void *save);
146
136
 
171
161
extern bool plugin_init(module::Registry &registry,
172
162
                        boost::program_options::options_description &long_options);
173
163
extern bool plugin_finalize(module::Registry &registry);
 
164
extern void plugin_startup_window(module::Registry &registry, drizzled::Session &session);
174
165
extern void my_print_help_inc_plugins(option *options);
175
166
extern bool plugin_is_ready(const LEX_STRING *name, int type);
176
167
extern void plugin_sessionvar_init(Session *session);
177
168
extern void plugin_sessionvar_cleanup(Session *session);
178
 
extern sys_var *intern_find_sys_var(const char *str, uint32_t, bool no_error);
179
169
 
180
170
int session_in_lock_tables(const Session *session);
181
 
int session_tablespace_op(const Session *session);
182
 
void set_session_proc_info(Session *session, const char *info);
183
 
const char *get_session_proc_info(Session *session);
184
 
int64_t session_test_options(const Session *session, int64_t test_options);
185
 
int session_sql_command(const Session *session);
186
 
enum_tx_isolation session_tx_isolation(const Session *session);
187
 
 
 
171
DRIZZLED_API int64_t session_test_options(const Session *session, int64_t test_options);
188
172
void compose_plugin_add(std::vector<std::string> options);
189
173
void compose_plugin_remove(std::vector<std::string> options);
190
174
void notify_plugin_load(std::string in_plugin_load);
202
186
  @retval -1    error
203
187
  @retval >= 0  a file handle that can be passed to dup or internal::my_close
204
188
*/
205
 
int mysql_tmpfile(const char *prefix);
 
189
DRIZZLED_API int tmpfile(const char *prefix);
206
190
 
207
191
} /* namespace drizzled */
208
192
 
209
 
#endif /* DRIZZLED_PLUGIN_H */
210
193