liby2 is the library which does all the stuff
in Y2ProgramComponent.cc the server/client is started (launchExternalProgram) by connecting pipes for stdin/stdout and starting the program via fork/execve.
The program is searched via pathsearch.cc and must reside in a sub-directory "clients" or "servers". The $HOME directory is a special case, as a sub-dir $HOME/.yast2 must exists.
Every program starts via main() genericfrontend.cc
The main() function parses argv and starts the client (Y2ComponentBroker::createClient) and the server (Y2ComponentBroker::createServer) for the component
Expressions are 'commands' to the server and sent via "...Component::evaluate (const YCPValue& command)"
evaluate() starts the 'real' component if it is not already running.
doActualWork() is used for client components
result() is used to finish server components
Looks for and creates YaST2 components This class has no instances and only static methods. There are two reasons for this:
a) Only one component broker is needed
b) The data must be accessable before the first global constructor is called
The component broker is the one that you can ask for if you need a certain component. Components are specified by names. A component name is an arbitrary string. The component broker does not statically know what kinds components exist. During global constructor call time (before main), the constructors of the ComponentCreator classes register themselves to the component broker.
For more details, see