an introduction to apr 2 0
Skip this Video
Download Presentation
An Introduction to APR 2.0

Loading in 2 Seconds...

play fullscreen
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