150 likes | 248 Views
An Introduction to APR 2.0. Christian Gross Consultant ChristianHGross@yahoo.ca Montreal, Canada. Bio: Christian Gross. Author of several books Conference speaker Skills Specialization in Internet, and Infrastructure technologies Windows, UNIX, LINUX server development
E N D
An Introduction to APR 2.0 Christian Gross Consultant ChristianHGross@yahoo.ca Montreal, Canada
Bio: Christian Gross • 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
Agenda • Discuss what APR represents • Why APR • Main points of APR • Go through demos that illustrate the various concepts of APR
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
What APR does • 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
Core APR • 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
Core APR (cont.) • 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
Managing Data Structures • Cross platform is problematic because not all functionality is supported • Structures look like spaghetti typdef struct foo { #ifdef WIN32 LONG item1; DWORD item2; #endif LONG shared; }; • Do not want to give programmers direct access • Violates cross-platform capabilities • False sense of security
Incomplete Data Types • 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
APR Status Codes • 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
Examples • Demos illustrating the various concepts of APR • Available at www.devspace.com • Look for Apache APR Demo Code
Where to get APR? • 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