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 |