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

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

Projects

None yet

3 participants

@egmkang
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
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
Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment