Overload socket_read(), See #1750

This commit is contained in:
Cloud Wu
2023-05-16 15:59:43 +08:00
parent 8b55660274
commit a5af5f6ba7

View File

@@ -41,7 +41,17 @@ function socket_channel.channel(desc)
__nodelay = desc.nodelay,
__overload_notify = desc.overload,
__overload = false,
__socket_meta = channel_socket_meta,
}
if desc.socket_read or desc.socket_readline then
c.__socket_meta = {
__index = {
read = desc.socket_read or channel_socket.read,
readline = desc.socket_readline or channel_socket.readline,
},
__gc = channel_socket_meta.__gc
}
end
return setmetatable(c, channel_meta)
end
@@ -319,7 +329,7 @@ local function connect_once(self)
skynet.yield()
end
self.__sock = setmetatable( {fd} , channel_socket_meta )
self.__sock = setmetatable( {fd} , self.__socket_meta )
self.__dispatch_thread = skynet.fork(function()
if self.__sock then
-- self.__sock can be false (socket closed) if error during connecting, See #1513