source: box/trunk/docs/api-notes/INDEX.txt @ 2478

Revision 2478, 2.5 KB checked in by chris, 3 years ago (diff)

Rearrangement of api-notes directory.

  • Property svn:eol-style set to native
Line 
1TITLE Programmers Notes for Box Backup
2
3This directory contains the programmers notes for the Box Backup system. They will be of interest only if you want to review or modify the code.
4
5These notes are intended to be run through a script to produce HTML at some later stage, hence the marks such as 'TITLE'.
6
7
8SUBTITLE Organisation
9
10The project is split up into several modules. The modules within 'lib' are building blocks for creation of the actual executable programs within 'bin'. 'test' contains unit tests for lib and bin modules.
11
12The file modules.txt lists the modules which are to be built, and their dependencies. It also allows for platform differences.
13
14
15SUBTITLE Documentation Organisation
16
17In this directory, the files correspond to modules or areas of interest. Sub directories of the same name contain files documenting specific classes within that module.
18
19
20SUBTITLE Suggested reading order
21
22* common/lib_common.txt
23* common/lib_server.txt
24* bin_bbackupd.txt
25* backup_encryption.txt
26* bin_bbstored.txt
27* raidfile/lib_raidfile.txt
28
29and refer to other sections as required.
30
31
32SUBTITLE Building
33
34The makefiles are generated by makebuildenv.pl. (The top level makefile is generated by makeparcels.pl, but this is for the end user to use, not a programmer.)
35
36To build a module, cd to it and type make. If the -DRELEASE option is specified (RELEASE=1 with GNU make) the release version will be built. The object files and exes are placed in a directory structure under 'release' or 'debug'.
37
38It is intended that a test will be written for everything, so in general make commands will be issued only within the test/* modules. Once it has been built, cd to debug/test/<testname> and run the test with ./t .
39
40
41SUBTITLE Programming style
42
43The code is written to be easy to write. Ease of programming is the primary concern, as this should lead to fewer bugs. Efficiency improvements can be made later when the system as a whole works.
44
45Much use is made of the STL.
46
47There is no common base class.
48
49All errors are reported using exceptions.
50
51Some of the boring code is generated by perl scripts from description files.
52
53There are a lot of modules and classes which can easily be used to build other projects in the future -- there is a lot of "framework" code.
54
55
56SUBTITLE Lots more documentation
57
58The files are extensively commented. Consider this notes as an overview, and then read the source files for detailed and definitive information.
59
60Each function and class has a very brief decsription of it's purpose in a standard header, and extensive efforts have been maed to comment the code itself.
61
Note: See TracBrowser for help on using the repository browser.