~drizzle-trunk/drizzle/development

499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
499.2.10 by Mark Atwood
add editor format hints, and other useful metadata comments
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
3
 *
499.2.10 by Mark Atwood
add editor format hints, and other useful metadata comments
4
 *  Copyright (C) 2008 Mark Atwood
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; version 2 of the License.
9
 *
10
 *  This program is distributed in the hope that it will be useful,
11
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 *  GNU General Public License for more details.
14
 *
15
 *  You should have received a copy of the GNU General Public License
16
 *  along with this program; if not, write to the Free Software
17
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18
 */
19
383.6.1 by Mark Atwood
add pluggable logging
20
#include <drizzled/server_includes.h>
21
#include <drizzled/logging.h>
549 by Monty Taylor
Took gettext.h out of header files.
22
#include <drizzled/gettext.h>
383.6.1 by Mark Atwood
add pluggable logging
23
24
int logging_initializer(st_plugin_int *plugin)
25
{
26
  logging_t *p;
27
28
  p= (logging_t *) malloc(sizeof(logging_t));
29
  if (p == NULL) return 1;
383.6.2 by Mark Atwood
changes of Brian's recommendation
30
  memset(p, 0, sizeof(logging_t));
383.6.1 by Mark Atwood
add pluggable logging
31
32
  plugin->data= (void *)p;
33
34
  if (plugin->plugin->init)
35
  {
36
    if (plugin->plugin->init((void *)p))
37
    {
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
38
      /* TRANSLATORS: The leading word "logging" is the name
39
         of the plugin api, and so should not be translated. */
40
      sql_print_error("logging plugin '%s' init() failed",
383.6.1 by Mark Atwood
add pluggable logging
41
                      plugin->name.str);
42
      goto err;
43
    }
44
  }
45
  return 0;
46
47
err:
48
  free(p);
49
  return 1;
50
}
51
52
int logging_finalizer(st_plugin_int *plugin)
53
{ 
383.6.2 by Mark Atwood
changes of Brian's recommendation
54
  logging_t *p = (logging_t *) plugin->data;
383.6.1 by Mark Atwood
add pluggable logging
55
56
  if (plugin->plugin->deinit)
57
  {
58
    if (plugin->plugin->deinit((void *)p))
59
    {
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
60
      /* TRANSLATORS: The leading word "logging" is the name
61
         of the plugin api, and so should not be translated. */
62
      sql_print_error(_("logging plugin '%s' deinit() failed"),
63
		      plugin->name.str);
383.6.1 by Mark Atwood
add pluggable logging
64
    }
65
  }
66
67
  if (p) free(p);
68
69
  return 0;
70
}
71
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
72
/* This gets called by plugin_foreach once for each loaded logging plugin */
520.1.22 by Brian Aker
Second pass of thd cleanup
73
static bool logging_pre_iterate (Session *session, plugin_ref plugin,
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
74
				 void *p __attribute__ ((__unused__)))
383.6.1 by Mark Atwood
add pluggable logging
75
{
76
  logging_t *l= plugin_data(plugin, logging_t *);
77
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
78
  /* call this loaded logging plugin's logging_pre function pointer */
383.6.1 by Mark Atwood
add pluggable logging
79
  if (l && l->logging_pre)
80
  {
520.1.22 by Brian Aker
Second pass of thd cleanup
81
    if (l->logging_pre(session))
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
82
    {
83
      /* TRANSLATORS: The leading word "logging" is the name
84
         of the plugin api, and so should not be translated. */
85
      sql_print_error(_("logging plugin '%s' logging_pre() failed"),
86
		      (char *)plugin_name(plugin));
383.6.1 by Mark Atwood
add pluggable logging
87
      return true;
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
88
    }
383.6.1 by Mark Atwood
add pluggable logging
89
  }
90
  return false;
91
}
92
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
93
/* This is the logging_pre_do entry point.
94
   This gets called by the rest of the Drizzle server code */
520.1.22 by Brian Aker
Second pass of thd cleanup
95
bool logging_pre_do (Session *session)
383.6.1 by Mark Atwood
add pluggable logging
96
{
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
97
  bool foreach_rv;
98
520.1.22 by Brian Aker
Second pass of thd cleanup
99
  foreach_rv= plugin_foreach(session,
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
100
			     logging_pre_iterate,
101
			     DRIZZLE_LOGGER_PLUGIN,
102
			     NULL);
103
  return foreach_rv;
383.6.1 by Mark Atwood
add pluggable logging
104
}
105
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
106
/* This gets called by plugin_foreach once for each loaded logging plugin */
520.1.22 by Brian Aker
Second pass of thd cleanup
107
static bool logging_post_iterate (Session *session, plugin_ref plugin, 
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
108
				  void *p __attribute__ ((__unused__)))
383.6.1 by Mark Atwood
add pluggable logging
109
{
110
  logging_t *l= plugin_data(plugin, logging_t *);
111
112
  if (l && l->logging_post)
113
  {
520.1.22 by Brian Aker
Second pass of thd cleanup
114
    if (l->logging_post(session))
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
115
    {
116
      /* TRANSLATORS: The leading word "logging" is the name
117
         of the plugin api, and so should not be translated. */
118
      sql_print_error(_("logging plugin '%s' logging_post() failed"),
119
		      (char *)plugin_name(plugin));
383.6.1 by Mark Atwood
add pluggable logging
120
      return true;
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
121
    }
383.6.1 by Mark Atwood
add pluggable logging
122
  }
123
  return false;
124
}
125
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
126
/* This is the logging_pre_do entry point.
127
   This gets called by the rest of the Drizzle server code */
520.1.22 by Brian Aker
Second pass of thd cleanup
128
bool logging_post_do (Session *session)
383.6.1 by Mark Atwood
add pluggable logging
129
{
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
130
  bool foreach_rv;
131
520.1.22 by Brian Aker
Second pass of thd cleanup
132
  foreach_rv= plugin_foreach(session,
499.2.14 by Mark Atwood
fixes as per MontyT's comments, prep for internationalization
133
			     logging_post_iterate,
134
			     DRIZZLE_LOGGER_PLUGIN,
135
			     NULL);
136
  return foreach_rv;
383.6.1 by Mark Atwood
add pluggable logging
137
}