~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/protocol.cc

  • Committer: Monty Taylor
  • Date: 2009-04-10 18:17:59 UTC
  • mto: (992.1.1 mordred)
  • mto: This revision was merged to the branch mainline in revision 990.
  • Revision ID: mordred@inaugust.com-20090410181759-wr58on1xxc9lwzut
Made plugin registration go through Plugin_registry.

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
 
20
20
#include <drizzled/server_includes.h>
21
21
#include <drizzled/protocol.h>
 
22
#include "drizzled/plugin_registry.h"
22
23
#include <drizzled/gettext.h>
23
24
 
 
25
 
24
26
extern char *opt_protocol;
25
27
 
26
28
ProtocolFactory *protocol_factory= NULL;
31
33
  return (*protocol_factory)();
32
34
}
33
35
 
34
 
int protocol_initializer(st_plugin_int *plugin)
 
36
bool add_protocol_factory(ProtocolFactory *factory)
35
37
{
36
 
  if (memcmp(plugin->plugin->name, opt_protocol, strlen(opt_protocol)))
37
 
    return 0;
 
38
  if (factory->getName() != opt_protocol)
 
39
    return true;
38
40
 
39
41
  if (protocol_factory != NULL)
40
42
  {
41
43
    fprintf(stderr, "You cannot load more then one protocol plugin\n");
42
44
    exit(1);
43
45
  }
 
46
  protocol_factory= factory;
 
47
 
 
48
  return false;
 
49
}
 
50
 
 
51
int protocol_initializer(st_plugin_int *plugin)
 
52
{
 
53
 
 
54
  ProtocolFactory *factory= NULL;
44
55
 
45
56
  assert(plugin->plugin->init); /* Find poorly designed plugins */
46
57
 
47
 
  if (plugin->plugin->init((void *)&protocol_factory))
 
58
  if (plugin->plugin->init((void *)&factory))
48
59
  {
49
60
    /* 
50
61
      TRANSLATORS> The leading word "protocol" is the name
55
66
      return 1;
56
67
  }
57
68
 
58
 
  plugin->data= protocol_factory;
 
69
  Plugin_registry &registry= Plugin_registry::get_plugin_registry();
 
70
  if (factory != NULL)
 
71
    registry.registerPlugin(factory);
 
72
  
 
73
  plugin->data= factory;
59
74
 
60
75
  return 0;
61
76
}