Dataflow in WFM
How UI() finds it's way and back
- WFMInterpreter::evaluateInstantiatedTerm
checks for "UI" -> evaluateUI()
- WFMInterpreter::evaluateUI
sends YCPB_FULLNAME to UI, then the term -> sendUnquoted()
- WFMInterpreter::sendUnquoted
check if arguments need to be unquoted -> server->evaluate()
server is the 'Y2Component *user_interface' as passed to the
WFMInterpreter constructor
- server->evaluate() == component->evaluate()
The liby2 component broker and creator ensure proper setup of the
user_interface pointer. It points to the (in this case client) side
of the UI server component. For plugin component, this goes directly
to the server side (e.g. Y2PluginComponent::evaluate() calls comp->evaluate ()
which equals Y2QtComponent::evaluate()).
For serial components, this is handled by
sendTo() and reveiceFrom().
WFM Initialization
- liby2: Y2ScriptComponent.cc
loads and initializes the WFM by Y2ComponentBroker::createClient("wfm")
see Y2ScriptComponent::doActualWork
- liby2: Y2ComponentBroker.cc
Y2ComponentBroker::createClient == createComponent (name, true)
- liby2: Y2ComponentBroker::createComponent
this searches through all orders and levels for a matching server
- liby2: Y2XXXComponent.cc
XXX is one of Plugin,Program,Remote,Script,Serial, or Stdio
createComponent only loads the component and initializes the component
class (interface), not the component 'core' itself. E.g. for the WFM case,
Y2WFMComponent::doActualWork() initializes the WFMInterpreter.