add socket:available() --> int

This commit is contained in:
MihailRis 2025-01-07 18:44:40 +03:00
parent e94b70fd3a
commit 13de581b4b
5 changed files with 17 additions and 0 deletions

View File

@ -54,6 +54,9 @@ socket:recv(
-- Closes the connection
socket:close()
-- Returns the number of data bytes available for reading
socket:available() --> int
-- Checks that the socket exists and is not closed.
socket:is_alive() --> bool

View File

@ -54,6 +54,9 @@ socket:recv(
-- Закрывает соединение
socket:close()
-- Возвращает количество доступных для чтения байт данных
socket:available() --> int
-- Проверяет, что сокет существует и не закрыт.
socket:is_alive() --> bool

View File

@ -40,6 +40,7 @@ local Socket = {__index={
send=function(self, ...) return network.__send(self.id, ...) end,
recv=function(self, ...) return network.__recv(self.id, ...) end,
close=function(self) return network.__close(self.id) end,
available=function(self) return network.__available(self.id) or 0 end,
is_alive=function(self) return network.__is_alive(self.id) end,
is_connected=function(self) return network.__is_connected(self.id) end,
get_address=function(self) return network.__get_address(self.id) end,

View File

@ -424,6 +424,7 @@ function __vc_resume_coroutine(id)
if co then
coroutine.resume(co)
if __vc_coroutine_error then
debug.error(__vc_coroutine_error)
error(__vc_coroutine_error)
end
return coroutine.status(co) ~= "dead"

View File

@ -123,6 +123,14 @@ static int l_recv(lua::State* L) {
return 1;
}
static int l_available(lua::State* L) {
u64id_t id = lua::tointeger(L, 1);
if (auto connection = engine->getNetwork().getConnection(id)) {
return lua::pushinteger(L, connection->available());
}
return 0;
}
static int l_open(lua::State* L) {
int port = lua::tointeger(L, 1);
lua::pushvalue(L, 2);
@ -200,6 +208,7 @@ const luaL_Reg networklib[] = {
{"__close", lua::wrap<l_close>},
{"__send", lua::wrap<l_send>},
{"__recv", lua::wrap<l_recv>},
{"__available", lua::wrap<l_available>},
{"__is_alive", lua::wrap<l_is_alive>},
{"__is_connected", lua::wrap<l_is_connected>},
{"__get_address", lua::wrap<l_get_address>},