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

OSCHINA-MIRROR/dennis-kk-service-box

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

Создание сервиса на Lua

Lua-скрипты для Lua-сервисов будут загружены с помощью bundle. Каждый Lua-сервис связан с одним bundle.

Определение сервиса

Предположим, что есть определение сервиса, которое находится в файле game.idl (описание интерфейса можно найти здесь: IDL сервисное определение),

сервис динамический MyFirstService общего назначения {
    [тип_скрипта:lua]
    void Приветмир()
}

Это определение сервиса MyFirstService, который имеет метод Приветмир. Ваш собственный game.idl должен находиться в директории src/repo/example:

example
└── game.idl

Генерация Lua-сервиса

Если репозиторий ещё не был инициализирован, выполните скрипт init.py для его инициализации.

Выполните следующие команды в директории src/repo:

python repo.py -t cpp -a game			// Генерирует связанные C++-коды для создания прокси и stubs
python repo.py -t lua -a game			// Генерирует связанные Lua-коды

После этого репозиторий создаст несколько файлов:```markdown repo ├── bin # Хранит бинарные файлы и скрипты от третьих сторон ├── example # Хранит IDL-файлы ├── lib # Хранит .a и .so файлы сервера │ ├── proxy │ ├── root │ └── stub ├── src # Все генерируемые файлы находятся здесь │ ├── game │ ├── idl │ ├── include │ ├── proxy │ └── stub ├── thirdparty # Хранит библиотеки от третьих сторон ├── tmp # Хранит зависимости других RPC-библиотек │ ├── rpc-backend-cpp │ ├── rpc-frontend │ └── rpc-repo └── usr # Директория с важными файлами ├── impl │ ├── game │ │ └── MyFirstService # Файлы, относящиеся к сервису MyFirstService ├── lua_template # Шаблоны для Lua-сервера └── lua # Важные файлы ├── 873702404099033397_lua │ ├── script │ │ └── main.lua # Реализация сервиса │ └── stub ├── json ├── lua_proxy └── proto


#### Реализация функциональности

Здесь будет создан ключевой файл `main.lua`, который требуется реализовать пользователю.

- main.lua

```lua
function on_tick(now)
end

function on_after_fork()
    return true
end

function on_before_destroy()
end

StubMyFirstService = {}

function StubMyFirstService:HelloWorld()
    -- Вывести "Hello World"
    ctx:log_info("Hello world!")
end
```

После создания файла продолжите выполнение команд в директории src/repo:

```
python repo.py -t cpp -b game                                // Создание проекта и компиляция сервиса
python repo.py -t lua -b game
```

Результатом будет следующее дерево каталогов:

```
repo
├── tmp                                                    // Директория с зависимыми RPC библиотеками
│   └── game
│       ├── proxy
│       │   └── MyFirstService
│       └── stub
│           └── MyFirstService                             // В случае Windows здесь будут соответствующие файлы проекта
└── lib                                                    // В этой директории будут находиться .a и .so файлы
    ├── game
    │   └── libgame.a
    ├── proxy
    │   └── game
    │       └── MyFirstService
    │           └── libMyFirstService_proxy.a
    └── stub
        ├── demodata
        └── game
            └── MyFirstService
                ├── libMyFirstService.so
                └── libMyFirstService_stub.a
```

## Изменение и повторное создание сервиса

Откройте файл src/repo/idl/game.idl, сделайте необходимые изменения, а затем выполните команды в директории src/repo:

```
python repo.py -t cpp -u example:LuaLogin
python repo.py -t cpp -b example:LuaLogin
python repo.py -t lua -u example:LuaLogin
python repo.py -t lua -b example:LuaLogin
```

Опубликовать ( 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