SF Logo

Downloads

  • radlib-2.7.5

Site Links

  • Home
  •  
  • Release Notes
  •  
  • README File
  •  
  • Online API Reference
  •  
  • User Forums
  •  
  • Process Flow Diagrams
  •  
  • Example Application Template
  •  
  • Join the Mailing List

Sourceforge Links

  • radlib@SourceForge
  • Bugs/Enhancements

SF Logo

Comments/Support: mteel@users.sourceforge.net


Last modified on April 7, 2008

Rapid Application Development Library

03/30/2007: radlib can now be used on both 32 and 64 bit platforms with no special configuration required.
12/24/2005: radlib now supports native development on the LinkSys NSLU2 as well as binary package support for radlib applications. See the README file for details.
12/8/2005: radlib now includes a new message router daemon and API. This new paradigm simplifies interprocess communications substantially. See radmsgRouter.h for details.
12/8/2005: radlib now includes a new example template which demonstrates multiprocess applications and the new message router API. See template/README in the distro for details.
11/3/2005: radlib is now built with libtool which generates shared libraries as well as static if supported on the build platform. Header files are now C++ friendly and radlib can be linked with C++ applications. LIST and LIST_ID were changed to RADLIST and RADLIST_ID to avoid problems with newer versions of MySQL.
10/22/2005: radlib now includes SHA-1, SHA-256 and CRC16/32 utilities. See the header files "radsha.h" and "radcrc.h" for details.

radlib is a C language library developed to abstract details of interprocess communications and common linux/unix system facilities so that application developers can concentrate on application solutions. It encourages developers (whether expert or novice) to use a proven paradigm of event-driven, asynchronous design. By abstracting interprocess messaging, events, timers, and any I/O device that can be represented as a file descriptor, radlib simplifies the implementation of multi-purpose processes, as well as multi-process applications.

radlib greatly improves typical process performance through the use of shared memory buffers to avoid costly "malloc" and "free" library calls. These buffers are used for interprocess messages. radlib utilizes shared memory constructs to provide global message queue management and global "Queue Groups" for increased interprocess communications flexibility.
All shared resources are semaphore protected to avoid issues with concurrent access.

In short, radlib is a sincere attempt to provide real-time OS capability on a non-real-time OS. It has been successfully deployed on linux, MacOSX and FreeBSD but there is no reason it would not build and run on any flavor of unix supporting System V IPC.

Specifically, radlib provides fast system buffers, a simple config file utility, events, doubly-linked lists, process logging through syslog, message queues, semaphores, shared memory utilities, timers, stacks, state machine utilities, a process framework, a process management utility to start/stop groups of processes, optional MySQL or PostgreSQL database API, a straightforward TCP/streams socket API, a UDP/datagram unicast/multicast/broadcast API, CRC and SHA utility APIs, and other assorted system utilities.

An example application template is provided in the distribution (see the "Example Application Template" link in the left column of this page). The template example serves two purposes: it demonstrates, through source code inspection, how a well constructed radlib process is implemented and it provides an example build environment with the capability for someone new to radlib to build and execute an example application "right out of the box".

Proprietary forms of radlib have been used in several mission-critical commercial applications with excellent results. It is light yet very powerful and efficient in real time. radlib is BSD-licensed (free to use in binary or source forms) and distributed as source to be built on the target platform. Build instructions are included in the distribution. See the file "COPYING" in the distribution for details concerning open source software and the BSD license.

radlib is currently used as the foundation of my unix/linux-based weather application, wview, which interfaces with the Davis Vantage Pro console to archive weather data in real-time and periodically (every 60 seconds) generate weather images and html files suitable for use on web sites (see my weather page). It uses multiple radlib processes which illustrate radlib's interprocess communications flexibility. Feel free to download the wview source as another example of radlib implementation.