Potential Network SIG
Johan Tibell
johan.tibell at gmail.com
Mon Aug 24 15:48:59 EDT 2009
On Mon, Aug 24, 2009 at 8:00 PM, Bryan O'Sullivan<bos at serpentine.com> wrote:
> On Fri, Aug 21, 2009 at 9:49 PM, Thomas DuBuisson
> <thomas.dubuisson at gmail.com> wrote:
>> 3) Use Bytestrings (and have corrosponding .Lazy modules) for efficiency.
>
> That's already a step up from the lowest-level bindings, which should be
> using Ptr a.
My plan for network-bytestring has always been to offer a
Network.Socket.Buffer with function such as 'recvInto' that work on
buffers. The higher level bytestring interface can then be implemented
in terms of this interface.
I've been struggling a bit with how to expose less frequently used
functionality in the BSD socket API such as the 'flags' parameter to
'send'. It feels a bit unfortunate to have to pass a "no flags" value
in the most frequent case. Optional keyword parameters would be useful
here.
>> 4) Support more features
>> Features such as Multicast, Header inclusion (IP_HDRINCL), address
>> binding, etc. IOW, most the IP_ and SO_ options of socket (7) and ip
>> (7) man pages. It would be rather nice if we were able to expose
>> these in a friendly way - but with our cross platform concerns that
>> might not be a good idea (e.g. I'm not familiar with windows).
>
> Providing Network.Windows and Network.Linux and Network.BSD etc modules
> would work fine for non-portable platform-specific features (of which there
> are many).
I think this makes sense. I read some slides from a presentation on
the next Java file API. The realization the Java community seemed to
have come to is that you need to offer APIs with both a cross platform
part and a platform specific part, preferably in such a way that both
can coexist somewhat peacefully (i.e. not two completely separate
class hierarchies).
Cheers,
Johan
More information about the Libraries
mailing list