State (PluginInfo &theInfo, Log *theLog) : Plugin (theInfo), RuntimeModule (theInfo), MessageObserver (theInfo), observerContext (0), convert (theInfo), info (theInfo), discovered (False), started (False), levelsHead (0), levelsTail (0), maxLevel (1), log (theLog) { externTable.store (get_plugin_handle (), this); RuntimeContext *rt = info.get_context (); if (rt) { observerContext = rt->get_plugin_observer_context (); Definitions defs (rt); Message msg; defs.create_message (PluginObserverActivateMessageName, msg); subscribe_to_message (msg); } if (observerContext) { observerContext->ref (); observerContext->moduleTable.store (info.get_handle (), this); } }