1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dennis-kk-service-box

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README-lua_sync_proxy_call.md 3.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 10.03.2025 00:55 ea35d5f

Синхронный вызов Lua прокси

При использовании Lua для написания сервисов поддерживается способ синхронного вызова RPC с удаленными экземплярами сервисов с помощью Lua корутин. Запуск и планирование этих корутин уже встроены внутрь сервисной коробки, поэтому они незаметны для пользователя.

Процесс вызова

Допустим, что имеется следующий сервис:

сервис динамический Login множественный=8 {
    ui64 login(строка, строка)
    void logout(ui64)
}

Инструменты генерации фреймворка создают такой файл Lua прокси, конкретная реализация которого была опущена:

ProxyLogin = {}
ProxyLogin.proxy_id = 0
EmptyArgs = {}

function ProxyLogin:login(arg1, arg2)
    ......
end

function ProxyLogin:logout(arg1)
    ......
end

Proxy = Proxy or {}

function Proxy:get_Login_timeout(name, timeout)
    ......
end
......

Внутри реализации вызывающего сервиса предположим, что зарегистрированный путь сервиса равен '/service/login'. Вызовите асинхронную версию прокси сервиса Login:

-- Получение сервиса, которое можно сохранить для последующего использования
-- Получение сервиса с именем /service/login, время ожидания равно 2000 миллисекунд, при превышении времени ожидания будет возвращено nil
local login_prx = Proxy:get_Login_timeout("/service/login", 2000)
......

-- Вызов удаленного сервиса через прокси, процесс корутина yield'ится, если вызов завершается ошибкой или истекает время ожидания, будет возвращено nil
local id = login_prx:login("пользователь", "пароль")

Перевод текстовых описаний и комментариев:

  • сервис динамический Login множественный=8 -> динамический сервис Login множественный=8
  • ui64 login(строка, строка) -> ui64 login(строка, строка)
  • void logout(ui64) -> void logout(ui64)
  • local login_prx = Proxy:get_LuaLogin_timeout("/service/login", 2000) -> local login_prx = Proxy:get_Login_timeout("/service/login", 2000)

Также исправлены некоторые мелкие ошибки в тексте:

  • "пользователь" -> "пользователь"
  • "пароль" -> "пароль"

Теперь весь текст переведен и оформлен согласно правилам.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/dennis-kk-service-box.git
git@api.gitlife.ru:oschina-mirror/dennis-kk-service-box.git
oschina-mirror
dennis-kk-service-box
dennis-kk-service-box
v0.4.0-alpha