source: documentation/main @ 1406:6b099cf4ab8d

Revision 1406:6b099cf4ab8d, 4.4 KB checked in by niam, 3 years ago (diff)

changed directory layout

Line 
1= libdodo architecture =
2
3Brief overview of libdodo subsystems:
4
5 * cgi interface provides instrumentation for CGI
6   basic and fast interfaces implement generic CGI and Fast-CGI support accordingly
7   * dialogue defines CGI-independent abstraction for interaction between application and web-server with help of exchange interface
8   CGI and Fast-CGI define interface-specific exchange interfaces
9   * server provides CGI-independent abstraction of CGI server interface
10   CGI and Fast-CGI define interface-specific server interfaces
11 * data describes interfaces for data access and manipulation
12   * base forms SQL-independent data base abstraction for relativistic databases with help of accumulator and connector interfaces
13     currently mysql, postresql and sqlite databases supported
14   * format defines data format abstraction
15     currently XML and JSON data formats supported
16   * memory interface forms interface for shared memory between OS processes
17   * tpl implements [wiki:LibdodoTplProcessor libdodo template processor] interface
18 * exception defines interfaces for handling application exceptions
19 * graphics forms image manipulation interface with help of image, draw and transform interfaces
20 * io provides Input/Output interfaces
21   * event provides I/O event interface
22     descriptor and manager interfaces available for this purpose
23     normally used with conjunction of non-blocked Input/Output
24   * channel is basic Input/Output interface
25     branches out into block and stream interfaces to handle block and stream I/O accordingly
26   * file is a representative of block interface to handle file based I/O
27     divided into regular, fifo and temp interfaces to handle read and write from and to regular files, fifos and temporary files
28   * memory implements abstraction of memory region as a block device
29     useful in areas where channel interface is required but memory as a storage is preferable
30   * network is a network interaction subsystem that is divided into client, server and exchange interface that stand for client- and server- side connection and stream interface to exchange data accordingly.
31     Generic network and unix socket connections supported. SSL encryption of transferred data is supported in both cases.
32   * pipe provides simple inter-process communication stream interface for data exchange
33 * pc stands for parallel computation and defines needed tools for this purpose
34   * sync handles synchronization mechanisms between asynchronous events such as threads or processes
35     * data provides data access synchronization interface
36       * object interface provides access synchronization for single data entry
37     * protector is an abstraction interface for execution flow synchronization
38     * process and thread are synchronization helpers
39     * stack provides easy interface for access synchronization of code sections
40   * execution subsystem provides abstraction of asynchronous program flow management
41     * process and thread are helper interfaces for handling processe and thread management accordingly
42     * manager is a helper interface to handle set of jobs
43 * rpc provides interface for remote procedure calls
44   client interface serves for client-side connection and server is for handling server-side
45   value, method and response represents RPC value, client request and server response accordingly
46   XML and JSON RPC protocols supported
47 * tools subsystem contains various helper functions
48   * code interface provides data encoding, compression, etc. routines
49   * filesystem contains filesystem related routines
50   * library provides helper functions to work with dynamically and statically linked libraries
51   * logger implements logging facilities
52   * misc provides miscellaneous routines not included in other sections
53   * network contains network functions
54   * os provides interface for interaction with OS such signal handling, getting environment information, etc.
55   * regexp is a regular expression matching and replacement interface
56     currently pcre and posix regexp libraries could be used as backends
57   * string defines various functions to work with strings
58 * xexec provides hooks injection into various libdodo subsystems mechanism
59   with help of xexec it is possible to define pre-exec and post-exec actions
60
61Most of the interfaces are thread- or process- safe by default. To avoid unneeded overhead it's possible to chose the protection in objects constructors or turn it off completely.
Note: See TracBrowser for help on using the repository browser.