Instead of returning a pollable_fd from server_socket::accept(), return a new abstract class connected_socket, which is able to provide an input_stream and an output_stream to the caller.
Instead of returning a pollable_fd from server_socket::accept(), return a new abstract class connected_socket, which is able to provide an input_stream and an output_stream to the caller.