~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/plugin/loader.cc

Merge Monty.

Show diffs side-by-side

added added

removed removed

Lines of Context:
281
281
}
282
282
 
283
283
 
284
 
static void delete_module(plugin::Registry &registry, plugin::Module *module)
 
284
static void delete_module(plugin::Module *module)
285
285
{
286
 
  plugin::Manifest manifest= module->getManifest();
287
 
 
288
 
  if (module->isInited)
289
 
  {
290
 
    if (manifest.deinit)
291
 
      manifest.deinit(registry);
292
 
  }
293
 
 
294
286
  /* Free allocated strings before deleting the plugin. */
295
287
  plugin_vars_free_values(module->system_vars);
296
288
  module->isInited= false;
303
295
 
304
296
static void reap_plugins(plugin::Registry &registry)
305
297
{
306
 
  plugin::Module *module;
307
 
 
308
298
  std::map<std::string, plugin::Module *>::const_iterator modules=
309
299
    registry.getModulesMap().begin();
310
 
    
 
300
 
311
301
  while (modules != registry.getModulesMap().end())
312
302
  {
313
 
    module= (*modules).second;
314
 
    delete_module(registry, module);
 
303
    plugin::Module *module= (*modules).second;
 
304
    delete_module(module);
315
305
    ++modules;
316
306
  }
 
307
 
317
308
  drizzle_del_plugin_sysvar();
318
309
}
319
310
 
343
334
{
344
335
  assert(module->isInited == false);
345
336
 
346
 
  registry.setCurrentModule(module);
 
337
  plugin::Context loading_context(registry, module);
347
338
  if (module->getManifest().init)
348
339
  {
349
 
    if (module->getManifest().init(registry))
 
340
    if (module->getManifest().init(loading_context))
350
341
    {
351
342
      errmsg_printf(ERRMSG_LVL_ERROR,
352
343
                    _("Plugin '%s' init function returned error.\n"),
354
345
      return true;
355
346
    }
356
347
  }
357
 
  registry.clearCurrentModule();
358
348
  module->isInited= true;
359
349
 
360
350
 
487
477
      plugin_initialize_vars(module);
488
478
 
489
479
      if (plugin_initialize(registry, module))
490
 
        delete_module(registry, module);
 
480
        delete_module(module);
491
481
    }
492
482
  }
493
483