yast2-core
YaST2 Component Broker
Author
Matthias Kettner
Todo:
clean up and update

How the component broker works

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


Generated on a sunny day for yast2-core by doxygen 1.8.8