[phobos] Breaking changes for std.socket improvement

Sean Kelly sean at invisibleduck.org
Thu Jul 8 12:12:12 PDT 2010


When I converted the Phobos license, I only changed the modules where the author could be contacted for permission.  The exceptions were:

base64 - Chris Miller
loader - Matt Wilson
md5 - RSA Data Security
openrj - Matt Wilson
perf - Matt Wilson
socket - Chris Miller
socketstream - Chris Miller
stream - Pavel Minayev

Since most/all of these modules are destined for a rewrite or removal, I hope it doesn't prove to be much of an issue.  By the way, I do think I could reach Matt Wilson if need be.  Neither of the other two though.

On Jul 8, 2010, at 10:39 AM, Masahiro Nakagawa wrote:

> Thanks.
> 
> I have something on my mind in committing this change.
> std.socket doesn't seem to be Boost license. Why? Can be changed?
> 
> 
> Masahiro
> 
> 
> On Wed, 07 Jul 2010 12:24:04 +0900, Sean Kelly <sean at invisibleduck.org> wrote:
> 
>> Sounds great.
>> 
>> Sent from my iPhone
>> 
>> On Jul 5, 2010, at 12:08 PM, "Masahiro Nakagawa" <repeatedly at gmail.com> wrote:
>> 
>>> 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
>>> _______________________________________________
>>> phobos mailing list
>>> phobos at puremagic.com
>>> http://lists.puremagic.com/mailman/listinfo/phobos
>> _______________________________________________
>> phobos mailing list
>> phobos at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/phobos
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos



More information about the phobos mailing list