Boost logo

Boost :

From: Robert Whitten (rmwjr_at_[hidden])
Date: 2002-09-22 06:18:02

Greeting Boosts Community:

The following is a description of two libraries developed at East Tennessee
State University by Dr. Phil Pfeiffer. I am a research assistant that has
been assigned the task of preparing these libraries for submission to if there is interest. Your comments are appreciated and

More complete descriptions plus source code can be found at:
Package name: PISCES [Platform-Independent Socket ClassES]: A set of C++
wrapper classes for OO socket programming.

Co-author: Sridhar Koritala, now of Informatica.

Contents: An OO library for TCP- and UDP-based socket programming, along
with sample codes illustrating the library's use.

Key features of library:

-Extensible leaf classes for supporting standard modes of TCP/UDP
-Classes for TCP client, server, and rollover [i.e., accept()-generated]
-Classes for UDP client, server, and peer [i.e.,
sendto()/recvfrom()-supporting] sockets
-Mixin-enhanced versions of the foregoing TCP and UDP socket classes, for
use with select()
-Mixin-enhanced versions of the foregoing TCP and UDP selectable socket
classes, for use with callbacks [scheduling policy: round-robin]
-Exception-based error management, with user-friendly error messages
(including WSA codes)
-Supporting classes for service access point manipulation, including classes
for IP addresses, DNS names, and port/address pairs.
-Supporting classes for manipulating objects in program's environment:
e.g., time of day, command-line parameters.

Remarks: PISCES is extensive enough to support the development of robust,
clean applications, but small enough--unlike, say, ACE--to be digested in
about a week, internals and all.

An isolation layer allows the library to ported readily between platforms.

Platforms: Windows NT, Windows 2000, IRIX, Linux. Should also work under

Known problems: I've seen PISCES's getopt.cpp module break g++ v.2.8.1
under IRIX, due to an assembler failure to support the long names generated
by STL compilation.

Package name: LADEL [Layout Descriptor Language]: A set of C++ wrapper
classes for dynamic I/O buffer specification and manipulation.

Primary Implementer: Ashfaq Jeelani, now of Siebel Systems.

Contents: An OO library for (1) imposing a struct-like view on an I/O
buffer, and then (2) manipulating that buffer using high-level streaming
operators, relative to this view.

_Key features of library_:

-A class, BufferManagementClass, that supports a constructor that accepts
two inputs:
        *a block buffer
        *a string, written in a C-like language for specifying storage layouts
[LADEL], that defines a "virtual view" of that block buffer
        *generates a set of objects that support streamed access to the block
buffer's "virtual fields"
        *an operator, ^, that selects a "virtual field" from a
BufferManagementClass object, returning a BufferManagementClass object
        *an operator, >>, that supports streamed, overflow-checked extraction from
a buffer's "virtual fields"
        *an operator, <<, that supports streamed, overflow-checked insertion into a
buffer's "virtual fields"
        *a method, setpos(), that resets the current byte pointer for a
BufferManagementClass object

Remarks: LADEL is the outcome of a thesis project that attempted to improve
on the standard bcopy() approach to block buffer manipulation. Ashfaq's
thesis is available from me, if you want more information on LADEL.

Platforms: Windows NT, Windows 2000. Should also work under Unix

Known problems: The code needs far more careful commenting.

Boost list run by bdawes at, gregod at, cpdaniel at, john at