Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Is there some API like "select/poll/epoll_wait"? #14961

Closed
egmkang opened this issue Jun 17, 2014 · 2 comments
Closed

Is there some API like "select/poll/epoll_wait"? #14961

egmkang opened this issue Jun 17, 2014 · 2 comments

Comments

@egmkang
Copy link

egmkang commented Jun 17, 2014

my application is something broadcast server, pseudo code like this:

BufferedSocket:
    vector<shared_ptr<Message>> messages_;
    OnRead():
        while(shared_ptr<Message> m = read())
            //this is important
            BroadMessageToAll(m)
    OnWrite():
        Buffer buffer = CombineMessageToBuffer(messages_)
            write(buffer)

EventLoop:
    vector<shared_ptr<BufferedSocket>> sockets = epoll_wait()
    for each socket in sockets:
        if socket.readable()
            socket.OnRead()
        if socket.writable()
            socket.OnWrite()

I want gather write option, call system call "write" once to send everything(maybe twice). that is what i do in cpp.
how can i do this thing in rust?
or there is a better way?

thanks a lot.

@alexcrichton
Copy link
Member

We do not currently have an epoll/select abstraction. The current answer is "spawn a task per socket". Tracking select/epoll is done in #6842, so closing in favor of that issue.

@steveklabnik
Copy link
Member

Today, https://tokio.rs/ is what you'd use.

bors added a commit to rust-lang-ci/rust that referenced this issue Jun 5, 2023
Fix drop scopes problems in mir

Fix false positives of `need-mut` emerged from rust-lang#14955

There are still 5 `need-mut` false positives on self, all related to `izip!` macro hygenic issue. I will try to do something about that before monday release.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants