Sure, we can call it a generalization of select.

But, (assuming you mean posix select()) they wouldn't be limited to fd's,
could be more granular (not just "ready for read/write/error"), and they
compose better.

Also, if we could find a way to rope off the buffers, I/O would place data
directly into the user buffer, thus avoiding one data copy and the read()
or write() call, which normally would be needed after a select().



On Wed, Jan 29, 2014 at 4:53 PM, Kevin Ballard <ke...@sb.org> wrote:

> On Jan 29, 2014, at 4:16 PM, Vadim <vadi...@gmail.com> wrote:
>
>
>
>
> On Wed, Jan 29, 2014 at 3:55 PM, Kevin Ballard <ke...@sb.org> wrote:
>
>> Any number of things.
>>
>> The use case here is an interactive protocol where writes go in both
>> directions, and can be initiated in response to external events. The
>> classic example is an IRC bot. The server can send a message at any time,
>> so the IRC bot needs to be constantly reading, but writes back to the
>> socket are not necessarily initiated directly in response to reads, they
>> may be initiated due to asynchronous operations, or keyboard input at the
>> terminal, or any number of other external stimuli.
>>
>
> In this case you'd be waiting on futures from those external events as
> well.   I am assuming that all of I/O would be future-ized, not just TCP
> streams.
>
>
> "external events" does not necessarily mean I/O. It could also mean some
> asynchronous computation inside the app.
>
> And if you're going to try and claim that this can be represented by
> futures too in this same scheme, well, it pretty much sounds like you're
> reinventing the generic Select. Or perhaps I should call it a run loop.
>
> -Kevin
>
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to