ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
ngl::nscript< enscript_lua > Class Reference

Lua脚本引擎特化版本。 More...

#include <nscript.h>

Inheritance diagram for ngl::nscript< enscript_lua >:
ngl::nscript_obj ngl::nscript_obj

Classes

struct  dmap_checkout
 Lua专用的map检出辅助结构体。 More...

Public Member Functions

enscript type () const noexcept override
 获取脚本引擎类型。
template<typename T>
bool init_sysdata (const T &asys)
 将进程/Actor系统数据推送到Lua脚本运行时。
void setupluapaths ()
 设置Lua搜索路径并注册原生辅助函数。
bool init (const char *asubdirectory, const char *ascript)
 创建Lua运行时并加载脚本文件。
template<typename T>
bool data_push (const char *aname, const char *asource, const T &adata, bool aedit)
 通知Lua脚本层一行数据库记录已创建/更新。
bool db_loadfinish ()
 通知Lua脚本层初始数据库加载已完成。
template<typename T>
bool handle (const char *aname, const T &adata)
 将一个Actor消息分发到Lua脚本层。
bool data_del (const char *aname, int64_t adataid)
 通知Lua脚本层一行已被删除。
template<typename T>
bool data_checkout (const char *aname, i64_actorid adataid, T &adata)
 调用Lua data_checkoutbyid 并读回成功标志和行数据。
template<typename T>
bool data_checkout (const char *aname, std::map< int64_t, T > &adata)
 调用Lua data_checkout 拉取一个表的所有已编辑行。
bool data_checkdel (const char *aname, i64_actorid adataid)
 调用Lua data_checkdelbyid 并返回布尔结果。
bool data_checkdel (const char *aname, std::vector< int64_t > &adataid)
 收集在Lua脚本状态中标记为已删除的行。

Detailed Description

Lua脚本引擎特化版本。

提供完整的Lua脚本绑定功能,包括:

  • Lua状态机生命周期管理
  • 数据库数据同步到脚本层
  • Actor消息分发到脚本层
  • 脚本层数据检出和删除检查

Member Function Documentation

◆ data_checkdel() [1/2]

bool ngl::nscript< enscript_lua >::data_checkdel ( const char * aname,
i64_actorid adataid )
inline

调用Lua data_checkdelbyid 并返回布尔结果。

Parameters
aname表名
adataid数据ID
Returns
bool 该行是否被标记为已删除

◆ data_checkdel() [2/2]

bool ngl::nscript< enscript_lua >::data_checkdel ( const char * aname,
std::vector< int64_t > & adataid )
inline

收集在Lua脚本状态中标记为已删除的行。

Parameters
aname表名
adataid输出参数,收集已删除的数据ID列表
Returns
bool 调用是否成功

◆ data_checkout() [1/2]

template<typename T>
bool ngl::nscript< enscript_lua >::data_checkout ( const char * aname,
i64_actorid adataid,
T & adata )
inline

调用Lua data_checkoutbyid 并读回成功标志和行数据。

Template Parameters
T数据类型
Parameters
aname表名
adataid数据ID
adata输出参数,接收编辑后的数据
Returns
bool 调用是否成功

◆ data_checkout() [2/2]

template<typename T>
bool ngl::nscript< enscript_lua >::data_checkout ( const char * aname,
std::map< int64_t, T > & adata )
inline

调用Lua data_checkout 拉取一个表的所有已编辑行。

Template Parameters
T数据类型
Parameters
aname表名
adata输出参数,接收ID->数据的映射
Returns
bool 调用是否成功

◆ data_del()

bool ngl::nscript< enscript_lua >::data_del ( const char * aname,
int64_t adataid )
inline

通知Lua脚本层一行已被删除。

Parameters
aname表名
adataid数据ID
Returns
bool 调用是否成功

◆ data_push()

template<typename T>
bool ngl::nscript< enscript_lua >::data_push ( const char * aname,
const char * asource,
const T & adata,
bool aedit )
inline

通知Lua脚本层一行数据库记录已创建/更新。

Template Parameters
T数据类型
Parameters
aname表名
asource数据来源标识
adata数据内容
aedit是否为编辑操作
Returns
bool 调用是否成功

◆ db_loadfinish()

bool ngl::nscript< enscript_lua >::db_loadfinish ( )
inline

通知Lua脚本层初始数据库加载已完成。

Returns
bool 调用是否成功

◆ handle()

template<typename T>
bool ngl::nscript< enscript_lua >::handle ( const char * aname,
const T & adata )
inline

将一个Actor消息分发到Lua脚本层。

Template Parameters
T消息数据类型
Parameters
aname消息名称
adata消息数据
Returns
bool 调用是否成功

◆ init()

bool ngl::nscript< enscript_lua >::init ( const char * asubdirectory,
const char * ascript )
inline

创建Lua运行时并加载脚本文件。

Parameters
asubdirectory脚本子目录
ascript脚本文件名
Returns
bool 初始化是否成功

◆ init_sysdata()

template<typename T>
bool ngl::nscript< enscript_lua >::init_sysdata ( const T & asys)
inline

将进程/Actor系统数据推送到Lua脚本运行时。

Template Parameters
T系统数据类型
Parameters
asys系统数据
Returns
bool 推送是否成功

◆ setupluapaths()

void ngl::nscript< enscript_lua >::setupluapaths ( )
inline

设置Lua搜索路径并注册原生辅助函数。

Note
注册了nguidstr2int64、send_client、send_actor三个C函数

◆ type()

enscript ngl::nscript< enscript_lua >::type ( ) const
inlineoverridevirtualnoexcept

获取脚本引擎类型。

Returns
enscript 脚本类型枚举值

Implements ngl::nscript_obj.


The documentation for this class was generated from the following file: