David Sugar - 2000-11-29

I have started some changes for 1.3 that are based on plans for 2.0.  I am not sure as yet if I will "migrate" 1.x into 2.0 or if I will start it as a seperate development tree.

The single biggest changes for 2.0 will involve plans to completely rearchitecture the entire socket and address hierarchies.  The likely result will be a new "Address" class which is composed of "struct sockaddr", rather than the current InetAddress based on "struct in_addr".  Underneath this will be:

    TCPAddress
    UDPAddress
    URLAddress
    UnixAddress

And in the "Socket" tree:

Socket(domain, protocol) and Socket(Address)
    SocketServer(Address) - has "accept" method
    SocketStream(Address)
        and SocketStream(domain, protocol)
   
From these we will get the more "familiar":

TCPServer(TCPAddress) derived from SocketServer
TCPStream(TCPAddress) derived from SocketStream
TCPStream(URLAddress) alternate to "TCPAddress"
UDPSocket(UDPAddress) derived from Socket
    UDPTransmit, UDPReceive, UDPDuplex
UnixStream(UnixAddress) derived from SocketStream
UnixSocket(UnixAddress) derived from Socket, UDP Unix domain
UnixServer(UnixAddress) derived from SocketServer

and then the familiar TCPSession(TCPAddress), etc...

Perhaps things like IPXSocket and SPXStream could also be supported.  It should also be possible to support IPV6 domain specific classes or any other protocol/socket type combination.