| Christian Gross | |
| Consultant | |
| ChristianHGross@yahoo.ca | |
| Montreal, Canada |
| Author of several books | ||
| Conference speaker | ||
| Skills | ||
| Specialization in Internet, and Infrastructure technologies | ||
| Windows, UNIX, LINUX server development | ||
| Companies worked/consulted for | ||
| UBS, TATA, Grammer, National Westminster, Daimler Chrysler, ETSI, ITU, Fame, NCR, etc | ||
| Discuss what APR represents | ||
| Why APR | ||
| Main points of APR | ||
| Go through demos that illustrate the various concepts of APR | ||
| APR: Apache Portable Run-time | ||
| Mission Statement | ||
| The Apache Portable Run-time mission is to provide a library of routines that allows programmers to write a program once and be able to compile it anywhere | ||
Yet another “Portable” Runtime?
| Original choices were NSPR, ACE or another library | |
| NSPR not used because of license issues and then too many features not required | |
| ACE used C++, which is useless with Apache | |
| Finally wrote APR, which is a continuation of ap_ work done in Apache 1.3.x |
| Abstracts the OS into a series of Apache related functions | |||
| Simpler for porting Apache to other platforms | |||
| Solves the following problems | |||
| Threads | |||
| Processes | |||
| Directories | |||
| APR Core: contains fundamental portable functions | |||
| APR Util: contains functions that are not core, but need to be portable | |||
| Contains following functionality | ||
| Reading and writing of files | ||
| Character set conversion | ||
| Network communications using sockets | ||
| Time management used for Internet type conversions | ||
| String management like C++ including natural order management | ||
| UNIX Password management routines | ||
| Table management routines | ||
| Contains following functionality (cont.) | ||
| UUID Internet generation | ||
| Filename canonicalization | ||
| Random data generation | ||
| Global lock management | ||
| Threads and process management | ||
| Dynamic library loading routines | ||
| Memory mapped and shared memory | ||
| Cross platform is problematic because not all functionality is supported | |
| Structures look like spaghetti |
| Solves problem of managing data structures across platforms | ||
| Data type is defined using a “handle” | ||
| Data type is managed using a number of routines | ||
| Programmer does not have direct access to structure details | ||
| But not all of APR is incomplete data type based | ||
| Used to indicate when things work and do not work | |||
| Different types of errors based on the sub-system that causes the error | |||
| Operating system native function calling error | |||
| Function calling error | |||
| APR will provide error codes for OS’s that do not support the native error or maps error codes | |||
| Errors codes provided by layered application | |||
| Success codes | |||
| Can include extra information indicating state | |||
| Demos illustrating the various concepts of APR | |||
| Available at www.devspace.com | |||
| Look for Apache APR Demo Code | |||
| APR is distributed with Apache 2.x | ||
| Can get standalone version by going to http://apr.apache.org | ||
| There exists an APR mailing list at above mentioned website | ||
| Documentation is currently sparse | ||