Lua-скрипты для Lua-сервисов будут загружены с помощью bundle. Каждый Lua-сервис связан с одним bundle.
Предположим, что есть определение сервиса, которое находится в файле game.idl (описание интерфейса можно найти здесь: IDL сервисное определение),
сервис динамический MyFirstService общего назначения {
[тип_скрипта:lua]
void Приветмир()
}
Это определение сервиса MyFirstService
, который имеет метод Приветмир
. Ваш собственный game.idl должен находиться в директории src/repo/example:
example
└── game.idl
Если репозиторий ещё не был инициализирован, выполните скрипт 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 )