~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/errmsg_stderr/errmsg_stderr.cc

  • Committer: Monty Taylor
  • Date: 2009-03-20 06:30:59 UTC
  • mfrom: (942.1.17 plugin-registration)
  • mto: This revision was merged to the branch mainline in revision 958.
  • Revision ID: mordred@inaugust.com-20090320063059-lr9hqvw15stxxgn3
Merged plugin registration branch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
/* todo, make this dynamic as needed */
29
29
#define MAX_MSG_LEN 8192
30
30
 
31
 
bool errmsg_stderr_func (Session *,
32
 
                         int ,
33
 
                         const char *format, va_list ap)
 
31
class Error_message_stderr : public Error_message_handler
34
32
{
35
 
  char msgbuf[MAX_MSG_LEN];
36
 
  int prv, wrv;
37
 
 
38
 
  prv= vsnprintf(msgbuf, MAX_MSG_LEN, format, ap);
39
 
  if (prv < 0) return true;
40
 
 
41
 
  /* a single write has a OS level thread lock
42
 
     so there is no need to have mutexes guarding this write,
43
 
  */
44
 
  wrv= write(2, msgbuf, prv);
45
 
  if ((wrv < 0) || (wrv != prv)) return true;
46
 
 
47
 
  return false;
48
 
}
 
33
public:
 
34
  virtual bool errmsg(Session *, int , const char *format, va_list ap)
 
35
  {
 
36
    char msgbuf[MAX_MSG_LEN];
 
37
    int prv, wrv;
 
38
 
 
39
    prv= vsnprintf(msgbuf, MAX_MSG_LEN, format, ap);
 
40
    if (prv < 0) return true;
 
41
 
 
42
    /* a single write has a OS level thread lock
 
43
       so there is no need to have mutexes guarding this write,
 
44
    */
 
45
    wrv= write(2, msgbuf, prv);
 
46
    if ((wrv < 0) || (wrv != prv)) return true;
 
47
 
 
48
    return false;
 
49
  }
 
50
};
49
51
 
50
52
static int errmsg_stderr_plugin_init(void *p)
51
53
{
52
 
  errmsg_t *l= (errmsg_t *) p;
 
54
  Error_message_handler **handler= static_cast<Error_message_handler **>(p);
53
55
 
54
 
  l->errmsg_func= errmsg_stderr_func;
 
56
  *handler= new Error_message_stderr();
55
57
 
56
58
  return 0;
57
59
}
58
60
 
59
61
static int errmsg_stderr_plugin_deinit(void *p)
60
62
{
61
 
  errmsg_t *l= (errmsg_t *) p;
 
63
  Error_message_stderr **handler= static_cast<Error_message_stderr **>(p);
62
64
 
63
 
  l->errmsg_func= NULL;
 
65
  if (handler)
 
66
    delete handler;
64
67
 
65
68
  return 0;
66
69
}