This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
niubinghui-luapluginmanage/example/example.c

59 lines
1.3 KiB
C
Raw Normal View History

#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;
}