【新增】概要设计、接口头文件及例子

This commit is contained in:
niubinghui
2024-07-31 17:25:00 +08:00
parent e4f230b3ca
commit 4dc31bfe1b
3 changed files with 464 additions and 0 deletions

59
example/example.c Normal file
View File

@@ -0,0 +1,59 @@
#include "lua_plugin_manage.h"
#include <string.h>
int session_getid(struct lpm_state * state)
{
if ( lpm_cbinding_get_params_count(state) != 1 )
return 0;
struct lpm_cdata data;
lpm_cbinding_get_params(state, 1, &data);
struct session * sess = (struct session *)data.data_user;
lpm_cdata_clean(&data);
int session_id = sess->id;
data.data_type = LPM_DATATYPE_INT;
lpm_cbinding_push_return(state, 1, &data);
lpm_cdata_clean(&data);
return 1;
}
int binding_functions(struct lpm_state * state) {
int count = 0;
if ( lpm_cbinding_function_register(state, session_getid, "getid", "session") ) {
count += 1;
}
return count;
}
int binding_data(struct lpm_state * state) {
int count = 0;
const char * version = "v0.1";
struct lpm_cdata data;
data.data_type = LPM_DATATYPE_CSTRING;
data.data_length = strlen(version);
data.data_string = strdup(version);
if ( lpm_cdata_register(state, &data, "version", NULL) ) {
count += 1;
}
lpm_cdata_clean(&data);
return count;
}
int main(int argc, char * argv[])
{
struct stellar st;
struct lpm_state * state = lpm_state_instance_create();
binding_functions(state);
binding_data(state);
lpm_state_instance_init(&st, state, "config.toml");
lpm_state_instance_free(state);
return 0;
}