An introduction to apr 2 0
1 / 14

An Introduction to APR 2.0 - PowerPoint PPT Presentation

  • Uploaded on

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

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about ' An Introduction to APR 2.0' - nash

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
An introduction to apr 2 0

An Introduction to APR 2.0

Christian Gross


[email protected]

Montreal, Canada

Bio christian gross
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


  • 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
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
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
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
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
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;


LONG shared;


  • Do not want to give programmers direct access

    • Violates cross-platform capabilities

  • False sense of security

Incomplete data types
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
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


  • Demos illustrating the various concepts of APR

    • Available at

      • Look for Apache APR Demo Code

Where to get apr
Where to get APR?

  • APR is distributed with Apache 2.x

  • Can get standalone version by going to

  • There exists an APR mailing list at above mentioned website

    • Documentation is currently sparse

Thanks questions send me email
Thanks!Questions?(Send me email)