Working with Open Source - Apache Portable Runtime

Download Report

Transcript Working with Open Source - Apache Portable Runtime

An Introduction to APR 2.0
Christian Gross
Consultant
[email protected]
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 {
 Do not want to give
programmers direct
#ifdef WIN32
access

LONG item1;
–
DWORD item2;

#endif
LONG shared;
};
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
Thanks!
Questions?
(Send me email)