Implementation of socket:peek

This commit is contained in:
Xertis 2026-09-03 19:32:49 +03:00
parent cbda27cd17
commit 9dacf7038f
6 changed files with 72 additions and 7 deletions

View file

@ -39,6 +39,7 @@ end
local Socket = {__index={
send=function(self, ...) return network.__send(self.id, ...) end,
recv=function(self, ...) return network.__recv(self.id, ...) end,
peek=function(self, ...) return network.__peek(self.id, ...) end,
recv_async=function(self, length, usetable)
while self:is_alive() do
local available = self:available()
@ -49,6 +50,16 @@ local Socket = {__index={
end
return self:recv(length, usetable)
end,
peek_async=function(self, length, usetable)
while self:is_alive() do
local available = self:available()
if available >= length then
return self:peek(length, usetable)
end
coroutine.yield()
end
return self:peek(length, usetable)
end,
as_stream=network.__as_stream,
close=function(self) return network.__close(self.id) end,
available=function(self) return network.__available(self.id) or 0 end,