wiki:BoincLite

Version 3 (modified by mo.v, 14 years ago) (diff)

--

BoincLite: A thin BOINC client library

Peter Hanappe, Sony Computer Science Laboratory

BoincLite defines the minimum API to realise a simple BOINC client. Its main functionality is to download work units, to upload the results, and to make sure there is always one work unit ready to be executed. It has a fair number of restrictions compared to the existing BOINC manager:

  • It handles only one BOINC project.
  • It doesn't manage the resource usage (CPU, memory, disk) nor the scheduling between projects and work units. If resource management is needed, the calling application will have to implement it.
  • It doesn't provide any glue for constructing a user interface. Again, this has to be managed by the calling application.
  • Only one workunit is computed at once and at most one workunit is waiting to be executed.
  • The downloads and uploads are performed sequentially.
  • The library doesn't use multi-threading. However, it is straighforward to spin off separate threads for the scheduler and the computation of the work unit so that they run parallel to the main thread.

The library consists of four components: BoincScheduler, BoincProxy, BoincConfiguration, and BoincHttp (see Fig. ).

BoincHttp is a thin abstraction layer for handling HTTP requests. It is used as a portable layer that can be easily implemented on top of existing HTTP libraries, such as libcurl on Linux or libhttp on CellOS.

The BoincConfiguration is another shallow abstraction layer. It manages all the configuration data needed by BOINC, such as the user ID, the authenticator string, and also the disk usage or the FLOPS of the host machine.

BoincLite source code and documentation are here:

svn co http://boinc.berkeley.edu/svn/trunk/BoincLite