next up previous
Next: Putting It Together. Up: Architecture. Previous: Client Side

Server Side

On the server side, an advocate object[*] goes between the engine and the manager. It forwards the engine's calls to the manager, and forwards the manager's calls to the engine. It also contains client-specific information, such as PID, hostname, processing speed, etc., which the manager may want to use.

The manager takes care of distributing and collecting data to and from its client engines. It has access to several data pools, which may be shared by other managers serving other purposes. Different managers and work pools can serve different purposes. For example, a work manager would take care of things such as distributing unfinished work to a worker client, while a watch manager would take care of serving results.

The whole set of associated managers and data pools compose a problem. A problem may include a program object, which creates and controls managers, data pools, and data. The program may be active - i.e., run in its own thread. Or, it may be passive, and only react to callbacks from its managers, such as when the work manager runs out of data and asks for more. As shown in Sect.4.1, callbacks can be used in this way to implement barrier synchronizations.

There may be many independent problems existing in a server at the same time. A problem table keeps track of these, and can be used by volunteers to choose the problem they want to participate in.


next up previous
Next: Putting It Together. Up: Architecture. Previous: Client Side
Luis Sarmenta
1/2/1998