| 1 | = libdodo architecture = |
|---|
| 2 | |
|---|
| 3 | Brief 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 | |
|---|
| 61 | Most 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. |
|---|