Author: ehuelsmann
Date: Sat Jan 28 16:52:58 2006
New Revision: 4
Modified:
usocket/trunk/doc/design.txt (contents, props changed)
Log:
Update design document.
Modified: usocket/trunk/doc/design.txt
==============================================================================
--- usocket/trunk/doc/design.txt (original)
+++ usocket/trunk/doc/design.txt Sat Jan 28 16:52:58 2006
@@ -1,19 +1,72 @@
-*- text -*-
+$Id$
+
+
usocket: Universal sockets library
==================================
Contents
========
+ * Motivation
+ * Design goal
+ * Functional requirements
+
+
+
+
+Motivation
+==========
+
+There are 2 other portability sockets packages [that I know of]
+out there:
+ 1) trivial-sockets
+ 2) acl-compat (which is a *lot* broader, but contains sockets too)
+The first misses some functionality which is fundamental when
+the requirements stop being 'trivial', such as finding out the
+addresses of either side connected to the tcp/ip stream.
+
+The second, being a complete compatibility library for Allegro,
+contains much more than only sockets. Next to that, as the docs
+say, is it mainly directed at providing the functionality required
+to port portable-allegroserve - meaning it may be (very) incomplete
+on some platforms.
+
+So, that's why I decided to inherit Erik Enge's project to build
+a library with the intention to provide portability code in only
+1 area of programming, targeted at 'not so trivial' programming.
+
+Also, I need this library to extend cl-irc with full DCC functionality.
+
+
Design goal
===========
-To provide a portable socket interface for as many implementations as
-possible, while keeping the portability layer as thin as possible.
+To provide a portable TCP/IP socket interface for as many
+implementations as possible, while keeping the portability layer
+as thin as possible.
+
+
+
+Functional requirements
+=======================
+
+The interface provided should allow:
+ - 'client'/active sockets
+ - 'server'/listening sockets
+ - retrieve IP addresses/ports for both sides of the connection
+ - provide the usual stream methods to operate on the connection stream
+ (not necessarily the socket itself; maybe a socket slot too)
+
+Several relevant support functionalities will have to be provided too:
+ - long <-> quad-vector operators
+ - quad-vector <-> string operators
+ - hostname <-> quad-vector operators (hostname resolution)
+
Minimally, I'd like to support:
- SBCL