Boost logo

Boost :

From: Arkadiy Vertleyb (vertleyb_at_[hidden])
Date: 2005-12-14 18:17:00


"Stefan Seefeld" <seefeld_at_[hidden]> wrote in message
news:43A09D3A.2030908_at_sympatico.ca...
> Arkadiy Vertleyb wrote:
> > "Jeremy Maitin-Shepard" <jbms_at_[hidden]> wrote
>
> >>The key problem with that approach is that a `thin' wrapper over the
> >>platform APIs is basically useless for implementing asynchronous
> >>operations, because asynchronous operations must be implemented in
> >>widely different ways on the different platforms.
> >>
> >>For synchronous operations, it happens to be the case that every
> >>platform provides basically the same interface, so at least a portable
> >>(but not necessarily very good) interface can be created through only a
> >>thin wrapper.
> >
> >
> > Then maybe it would make sence to define this kind of API for
synchronous
> > operations, while asio encapsulates asynchronous IO using a higher-level
> > abstraction. The socket class would be cleanned from the asynchronous
> > stuff, and used by both asio and synchronous API.
>
> For me a 'socket class' is two things (let's ignore datagram sockets in
> this context): a way to create socket endpoints, as well as manipulate
> associated options, and on the other hand some means to read and write.

So, this right away leads you to sync_socket and async_socket. What if the
read/write operations (ones that make the distinctinction between
sync/async) were factored out? Then you would have a socket class to create
socket endpoints and manipulate
associated options, and (a)synchronicity would be defined by the operations
applied to this socket.

Regards,
Arkadiy


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk