Actions
Feature #21837
openIntroduce socket hooks in Fiber Scheduler interface
Feature #21837:
Introduce socket hooks in Fiber Scheduler interface
Status:
Open
Assignee:
-
Target version:
-
Description
Currently the fiber scheduler interface does not support any socket operations. The stock Ruby socket implementation performs all operations in a non-blocking way, and invokes the #io_wait fiber scheduler hook in order to wait for readiness. I propose adding the following hooks:
-
#socket_recv(sock, buffer, length, flags, recvfrom): performs arecvorrecvfrom. Therecvfromargument is a boolean denoting whether arecvfromshould be performed. When true, the hook should return an array containing the number of bytes received and the source address. When false, the hook should return the number of bytes received. -
#socket_send(sock, dest, buffer, length, flags): performs asendorsendto. Thedestargument is nil for asend. When not nil, asendtooperation should be done. -
#socket_connect(sock, addr): performs aconnect. -
#socket_accept(sock, client_sockaddr)- performs anaccept. Theclient_sockaddrargument is anIO::Bufferthat receives the peer addrinfo.
The PR for this feature: https://github.com/ruby/ruby/pull/15865
No data to display
Actions