
$Id: TODO,v 1.82 2003/10/18 15:42:59 obry Exp $

Here a some notes about things to fix, ideas and potential features to be
implemented:

- Correctly handle all Date/Time format, there is 3 of them:

  Sun, 06 Nov 1994 08:49:37 GMT   ; RFC 822, updated by RFC 1123
  Sunday, 06-Nov-94 08:49:37 GMT  ; RFC 850, obsoleted by RFC 1036
  Sun Nov  6 08:49:37 1994        ; ANSI C's asctime() format

  (Nice to see that when designing an RFC they are considering the C way of
   doing things, seems completly awkward to me :)

  Actually only the first format is supported.

- Implement multi-server with a dispatcher of request to build server which
  must support a lot of requests. Could be using GLADE or a standard
  redirector of request (using HTTP redirection).

- Implement a Proxy server protocol.

- Change server parameters via the admin page (like the maximum number of
  connections, server name, active session, upload path...).

- Thread Pool management (dynamically adding lines if needed...)

- Make the Session management a separate partition to be able to share the
  session data across the network. Something needed to do load balancing into
  a Web Farm.

- Replace OpenSSL by GNUTLS library when this library will become stable.

- Would be nice to have an ActiveX component to support Server Push on
  Internet Explorer.

- Would be nice to have a very light version of the Web Server - LAWS for
  Light Ada Web Server - this will be a nice solution for the communication
  sub-system. A LAWS would have only one task, no file-upload, not all the
  mechanisms to handle the concurrency...

- Support socket timeout options (send and receive timeout) at the OS
  level. Right now a task is doing the job.

- Sort out problem with client socket that are not closed and can't be
  reused. This happen if a lot of requests are done to the server.

- Cookie for the session is set for the whole site (path=/), would be nice to
  have a way to configure that.

- Support Session ID encoded into the URL to avoid use of cookie. Such a
  session ID will only be valid for the current session of course.

- Support session parameter of any types (only Boolean, Float, Integer and
  String are supported currently).

- Build a Web based file-system framework (AWSFS). Using GET/PUT to handle
  variables, inherited from a specific type, whose value is stored on an AWS
  server. The value will be automatically retrieved at initialization time and
  stored back into the AWSFS at finalization. These steps should be completely
  transparent to users.

- When removing the session (AWS.Session.Delete) it would be good to also
  remove the cookie on the client side.

- Merge the message handling on the server and client side. Right now both are
  using different implementations.

- AWS.Client support a single cookie. This is a bad limitation and must be
  fixed. It must also handle properly the case where a cookie value is
  updated.

- Add support for more XML Schema types
  byte, unsignedByte, short, unsignedShort, unsignedInt, long, unsignedLong
  double, date, time, xsd:hexBinary, decimal

  decimal is certainly a bit difficult to support, we need an arbitrary
  precision package.

- Add support for array with multiple dimensions

   <complexType name="ArrayOfString2D">
     <complexContent>
       <restriction base="SOAP-ENC:Array">
         <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[,]" /> 
       </restriction>
     </complexContent>
   </complexType>

- Add GNAT project files to use AWS. Only support for developpers has been
  implemented.

- Support compress/gzip encoding if client support it.
  All the compress/decompress features are implemented as memory compressed
  streams. Should we have a direct implementation in AWS response circuitry ?

- Add client's compress/decompress support.

- Ada 2005 should support all sort of containers, use them instead of the
  include/Table_Of_* components.

- Add option to awsres tool to support compressed embedded resources.

- Add support for embedded resources in AWS. Have a way to either send
  compressed or decompressed data to the browser depending on it's support for
  compressed message body.

- Add support for compressed data in the memory stream on the client side.
  User should be able to choose uncompressing data at the read stage.
  This enhancement will reduce the memory used by the data.
  This feature should be used when user reads data from memory stream
  partially. It is better for big compressed data, but worse for relatively
  small compressed data, when user want to read it at once.

- Add SMTP authentication support

- Add POP3 support

- Add a time period dispatcher. This will be a new AWS.Services.Dispatcher
  child, the idea is to have a set of time period associated with a callback,
  the same URI will be dispatched to the right callback depending on the
  current local time. I had this idea while looking at the TF1 Web Site (one
  of the TV channel in France), they have a set of links to the first page,
  late in the evening the links tends to point to adult contents :)

=============== Point to fix before next release
