[phobos] Breaking changes for std.socket improvement

Masahiro Nakagawa repeatedly at gmail.com
Mon Jul 5 12:08:26 PDT 2010


std.socket lacks some features and I don't like current design. So, I  
rewrote this module.

Summary:

- Change API of Protocol, Service, and InternetHost.

-----
/* old */
Protocol proto = new Protocol;  // construct before check
enforce(proto.getProtocolByType(ProtocolType.TCP));  // check
// do stuff

/* new */
Protocol proto = enforce(Protocol.getByType(ProtocolType.TCP));  //  
construct after check
// do stuff
-----

I leaves these classes for aliases(getaddrinfo can't get aliases).

- Add AddressInfo class(wraps C's addrinfo struct)

AddressInfo resolves some address familes. I added AF_UNIX support.
This class is useful for Socket and Endpoint initialization.

In the future, above classes should be moved to std.net(or std.net.dns).

- Endpoint

I think Address should not have port. Address is a address, not a endpoint.
So I added Endpoint structs(derived their name from Asio) and Endpoints  
use corresponding Addresses.

-- IPEndpoint

This struct supports IPv4 and IPv6 using IPAddress.

-- LocalEndpoint

This struct supports local path using LocalAddress.

- Socket

Socket is a template bacause Socket should support any address familes.
Old Socket uses class-inheritance, but newFamilyObject is  
bad(newFamilyObject can't use user-defined class).

Some methods of old Socket used return-value checking :(

- SocketSet

add and remove methods are typesafe-variadic function.

- Add const and attribute

Sources:

- socket.d
http://bitbucket.org/repeatedly/scrap/src/tip/socket.d

unittest is a simple example.

- socketstream.d
http://bitbucket.org/repeatedly/scrap/src/tip/socketstream.d

std.stream will be replaced or eliminated. This module need?

- LocalEndpoint sample
http://bitbucket.org/repeatedly/scrap/src/tip/sample/echo_server.d
http://bitbucket.org/repeatedly/scrap/src/tip/sample/echo_client.d

Contribution from satoru_h


I would like to commit this change. What do you think?


Masahiro


More information about the phobos mailing list