> On Aug 19, 2016, at 1:58 PM, Andrew Trick via swift-users 
> <swift-users@swift.org> wrote:
> 
> 
>> On Aug 18, 2016, at 12:28 AM, Quinn The Eskimo! via swift-users 
>> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote:
>> 
>> 
>> On 17 Aug 2016, at 18:55, Martin R via swift-users <swift-users@swift.org 
>> <mailto:swift-users@swift.org>> wrote:
>> 
>>> - Are both solutions correct, should one be preferred, or are both wrong?
>> 
>> Your `withMemoryRebound` solution is correct.
> 
> Absolutely, withMemoryRebound is always safe. You can use it whenever you 
> just need to reinterpret memory at a call site and know the number of values 
> stored that memory location. In this case it’s “easy" because you’re dealing 
> a single sockaddr_in.
> 
> The UnsafeRawPointer proposal is the definitive reference
> https://github.com/apple/swift-evolution/blob/master/proposals/0107-unsaferawpointer.md
>  
> <https://github.com/apple/swift-evolution/blob/master/proposals/0107-unsaferawpointer.md>
> 
> But this migration guide is more approachable… it’s still WIP:
> https://gist.github.com/atrick/0283ae0e284610fd21ad6ed3f454a585 
> <https://gist.github.com/atrick/0283ae0e284610fd21ad6ed3f454a585>
> 
>>> - Can the same be achieved simpler?
>> 
>> Not without introducing a layer of abstraction.
>> 
>> In my case I introduced an abstract `Address` type (basically a wrapper 
>> around `sockaddr_storage`) and then added a method to that object which 
>> calls a closure with the right parameters (actually, multiple such methods, 
>> depending on whether I’m calling something like `connect` which takes an 
>> address, or `getpeername`, which returns one).  This approach concentrates 
>> all the ugly in one place, making the rest of my BSD Sockets code much 
>> cleaner.
> 
> This is an annoying UpdatePointer migration case because it falls under the 
> category of misbehaving C APIs that we deliberately don't want to encourage 
> in Swift.
> 
> The only good answer is to provide a Swift wrapper on top of the socket API 
> as Quinn has done. It would be nice to post that code at some point so users 
> of the socket API can copy-paste into their project.

I wonder if we could provide it via an overlay or if it is a more general thing 
that could use a generic/protocol? Just a random thought.

> 
> -Andy
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to