~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/errmsg.cc

  • Committer: Mark Atwood
  • Date: 2008-10-07 10:08:29 UTC
  • mto: (520.1.13 drizzle)
  • mto: This revision was merged to the branch mainline in revision 530.
  • Revision ID: mark@fallenpegasus.com-20081007100829-4ix2nlju4tp55xhr
add hooks for errmsg plugin type

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <drizzled/server_includes.h>
 
2
#include <drizzled/errmsg.h>
 
3
 
 
4
int errmsg_initializer(st_plugin_int *plugin)
 
5
{
 
6
  errmsg_t *p;
 
7
 
 
8
  fprintf(stderr, "MRA %s plugin:%s dl:%s\n",
 
9
          __func__, plugin->name.str, plugin->plugin_dl->dl.str);
 
10
 
 
11
  p= (errmsg_t *) malloc(sizeof(errmsg_t));
 
12
  if (p == NULL) return 1;
 
13
  memset(p, 0, sizeof(errmsg_t));
 
14
 
 
15
  plugin->data= (void *)p;
 
16
 
 
17
  if (plugin->plugin->init)
 
18
  {
 
19
    if (plugin->plugin->init((void *)p))
 
20
    {
 
21
      sql_print_error("Errmsg plugin '%s' init function returned error.",
 
22
                      plugin->name.str);
 
23
      goto err;
 
24
    }
 
25
  }
 
26
  return 0;
 
27
 
 
28
err:
 
29
  free(p);
 
30
  return 1;
 
31
}
 
32
 
 
33
int errmsg_finalizer(st_plugin_int *plugin)
 
34
 
35
  errmsg_t *p = (errmsg_t *) plugin->data;
 
36
 
 
37
  fprintf(stderr, "MRA %s plugin:%s dl:%s\n",
 
38
          __func__, plugin->name.str, plugin->plugin_dl->dl.str);
 
39
 
 
40
  if (plugin->plugin->deinit)
 
41
  {
 
42
    if (plugin->plugin->deinit((void *)p))
 
43
    {
 
44
      sql_print_error("Errmsg plugin '%s' deinit function returned error.",
 
45
                      plugin->name.str);
 
46
    }
 
47
  }
 
48
 
 
49
  if (p) free(p);
 
50
 
 
51
  return 0;
 
52
}
 
53
 
 
54
static bool errmsg_iterate (THD *thd, plugin_ref plugin,
 
55
                            void *stuff __attribute__ ((__unused__)))
 
56
{
 
57
  errmsg_t *l= plugin_data(plugin, errmsg_t *);
 
58
 
 
59
  if (l && l->errmsg_pre)
 
60
  {
 
61
    if (l->errmsg_pre(thd))
 
62
      return true;
 
63
  }
 
64
  return false;
 
65
}
 
66
 
 
67
void errmsg_vprintf (THD *thd, int priority, const char *format, va_list ap)
 
68
{
 
69
}
 
70
 
 
71
void errmsg_pre_do (THD *thd)
 
72
{
 
73
  if (plugin_foreach(thd, errmsg_pre_iterate, DRIZZLE_LOGGER_PLUGIN, NULL))
 
74
  {
 
75
    sql_print_error("Errmsg plugin pre had an error.");
 
76
  }
 
77
  return;
 
78
}