diff options
Diffstat (limited to 'example')
| -rw-r--r-- | example/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | example/luatest/luatest.cpp | 50 | ||||
| -rw-r--r-- | example/luatest/tags | 18 | ||||
| -rw-r--r-- | example/multithread.cpp | 109 | ||||
| -rw-r--r-- | example/single_thread.cpp | 309 |
5 files changed, 148 insertions, 340 deletions
diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt index b46502e..40573e5 100644 --- a/example/CMakeLists.txt +++ b/example/CMakeLists.txt @@ -21,4 +21,4 @@ else() target_link_libraries(multithread ${lib_name}_shared pthread) endif() -add_subdirectory(luatest)
\ No newline at end of file +# add_subdirectory(luatest)
\ No newline at end of file diff --git a/example/luatest/luatest.cpp b/example/luatest/luatest.cpp index 686245b..f3e7552 100644 --- a/example/luatest/luatest.cpp +++ b/example/luatest/luatest.cpp @@ -19,7 +19,7 @@ extern "C" #include<sys/stat.h> #include<dirent.h> } -#include"tsg_lua_interface.h" +#include"elua.h" #define MAC_FRAME_HEADER_LEN 14 @@ -34,7 +34,7 @@ extern "C" #define MIN(a, b) ((a) > (b) ?(b):(a)) #endif -#define TSG_LUA_LOOP_TIMES 10000 +#define elua_LOOP_TIMES 10000 int c_pcap_flag[MAX_THREAD_NUM]; int c_text_flag[MAX_THREAD_NUM]; @@ -82,7 +82,7 @@ typedef struct lua_thread_info_s{ typedef struct lua_pacp_info_s { - tsg_lua_handle L; + elua_vm *L; size_t script_id; size_t thread_id; uint32_t packet_num; @@ -93,7 +93,7 @@ typedef struct lua_pacp_info_s typedef struct lua_text_info_s { - tsg_lua_handle L; + elua_vm *L; size_t script_id; size_t thread_id; uint64_t total_time; @@ -318,7 +318,7 @@ void c_pcap_handle(u_char *userarg, const struct pcap_pkthdr *pkthdr, const u_ch while(c_pcap_flag[pcap_info->thread_id] != 3) { memset(result, 0, sizeof(result)); - for(i = 0; i < TSG_LUA_LOOP_TIMES; i++) + for(i = 0; i < elua_LOOP_TIMES; i++) { pcap_info->c_handle(tcp_payload, tcp_payload_len, pcap_info->feature, result); } @@ -327,13 +327,13 @@ void c_pcap_handle(u_char *userarg, const struct pcap_pkthdr *pkthdr, const u_ch memset(result, 0, sizeof(result)); clock_gettime(CLOCK_MONOTONIC, &time_start); - for(i = 0; i < TSG_LUA_LOOP_TIMES; i++) + for(i = 0; i < elua_LOOP_TIMES; i++) { pcap_info->c_handle(tcp_payload, tcp_payload_len, pcap_info->feature, result); } clock_gettime(CLOCK_MONOTONIC, &time_end); time += calc_time(time_start, time_end); - time /= TSG_LUA_LOOP_TIMES; + time /= elua_LOOP_TIMES; pcap_info->total_time += time; debuginfo_len = strlen(pcap_info->debuginfo); @@ -369,7 +369,7 @@ static void c_text_handle(c_text_info_t *text_info, char *debuginfo) while(c_text_flag[text_info->thread_id] != 3) { memset(result, 0, sizeof(result)); - for(i = 0; i < TSG_LUA_LOOP_TIMES; i++) + for(i = 0; i < elua_LOOP_TIMES; i++) { text_info->c_handle((const u_char *)buffer, buffer_len, text_info->feature, result); } @@ -377,7 +377,7 @@ static void c_text_handle(c_text_info_t *text_info, char *debuginfo) } clock_gettime(CLOCK_MONOTONIC, &time_start); - for (i = 0; i < TSG_LUA_LOOP_TIMES; i ++) + for (i = 0; i < elua_LOOP_TIMES; i ++) { if (text_info->c_handle((const u_char *)buffer, buffer_len, text_info->feature, result)) { @@ -386,7 +386,7 @@ static void c_text_handle(c_text_info_t *text_info, char *debuginfo) } clock_gettime(CLOCK_MONOTONIC, &time_end); time = calc_time(time_start, time_end); - time /= TSG_LUA_LOOP_TIMES; + time /= elua_LOOP_TIMES; text_info->total_time += time; file_name = (const char *)memrchr(text_info->file_name, '/', strlen(text_info->file_name)); @@ -546,9 +546,9 @@ void lua_pcap_handle(u_char *userarg, const struct pcap_pkthdr *pkthdr, const u_ while (lua_pcap_flag[pcap_info->thread_id] != 3) { - for (i = 0; i < TSG_LUA_LOOP_TIMES; i++) + for (i = 0; i < elua_LOOP_TIMES; i++) { - ret = tsg_lua_cache_exec(pcap_info->L, pcap_info->script_id, (const char *)tcp_payload, tcp_payload_len, out, &out_len, &out_type); + ret = elua_execute_script(pcap_info->L, pcap_info->script_id, (const char *)tcp_payload, tcp_payload_len, out, &out_len, &out_type); if (ret < 0) { sprintf(result, "failed"); @@ -559,9 +559,9 @@ void lua_pcap_handle(u_char *userarg, const struct pcap_pkthdr *pkthdr, const u_ } clock_gettime(CLOCK_MONOTONIC, &time_start); - for (i = 0; i < TSG_LUA_LOOP_TIMES; i++) + for (i = 0; i < elua_LOOP_TIMES; i++) { - ret = tsg_lua_cache_exec(pcap_info->L, pcap_info->script_id, (const char *)tcp_payload, tcp_payload_len, out, &out_len, &out_type); + ret = elua_execute_script(pcap_info->L, pcap_info->script_id, (const char *)tcp_payload, tcp_payload_len, out, &out_len, &out_type); if (ret < 0) { sprintf(result, "failed"); @@ -570,7 +570,7 @@ void lua_pcap_handle(u_char *userarg, const struct pcap_pkthdr *pkthdr, const u_ } clock_gettime(CLOCK_MONOTONIC, &time_end); time += calc_time(time_start, time_end); - time /= TSG_LUA_LOOP_TIMES; + time /= elua_LOOP_TIMES; pcap_info->total_time += time; switch(out_type) @@ -595,7 +595,7 @@ void lua_pcap_handle(u_char *userarg, const struct pcap_pkthdr *pkthdr, const u_ } return ; } -static void lua_pcap_prefix_handle(lua_thread_info_t *thread_info, char *debuginfo, tsg_lua_handle L, size_t script_id) +static void lua_pcap_prefix_handle(lua_thread_info_t *thread_info, char *debuginfo, elua_vm *L, size_t script_id) { if ((thread_info == NULL) || (debuginfo == NULL) || (script_id < 1)) @@ -629,7 +629,7 @@ static void lua_pcap_prefix_handle(lua_thread_info_t *thread_info, char *debugin return ; } -static void lua_text_handle(lua_text_info_t *text_info, char *debuginfo, tsg_lua_handle lua) +static void lua_text_handle(lua_text_info_t *text_info, char *debuginfo, elua_vm *Lua) { char buffer[1024 * 1024]; size_t buffer_len; @@ -656,9 +656,9 @@ static void lua_text_handle(lua_text_info_t *text_info, char *debuginfo, tsg_lua while (lua_text_flag[text_info->thread_id] != 3) { - for (i = 0; i < TSG_LUA_LOOP_TIMES; i++) + for (i = 0; i < elua_LOOP_TIMES; i++) { - ret = tsg_lua_cache_exec(lua, text_info->script_id, (const char *)buffer, buffer_len, out, &out_len, &out_type); + ret = elua_execute_script(lua, text_info->script_id, (const char *)buffer, buffer_len, out, &out_len, &out_type); if (ret < 0) { return; @@ -668,9 +668,9 @@ static void lua_text_handle(lua_text_info_t *text_info, char *debuginfo, tsg_lua } clock_gettime(CLOCK_MONOTONIC, &time_start); - for (i = 0; i < TSG_LUA_LOOP_TIMES; i ++) + for (i = 0; i < elua_LOOP_TIMES; i ++) { - ret = tsg_lua_cache_exec(lua, text_info->script_id, (const char *)buffer, buffer_len, out, &out_len, &out_type); + ret = elua_execute_script(lua, text_info->script_id, (const char *)buffer, buffer_len, out, &out_len, &out_type); if (ret < 0) { return; @@ -678,7 +678,7 @@ static void lua_text_handle(lua_text_info_t *text_info, char *debuginfo, tsg_lua } clock_gettime(CLOCK_MONOTONIC, &time_end); time = calc_time(time_start, time_end); - time /= TSG_LUA_LOOP_TIMES; + time /= elua_LOOP_TIMES; text_info->total_time += time; switch(out_type) @@ -715,7 +715,7 @@ static void *lua_file_handle(void *ptr) size_t script_id; char script[4096]; size_t script_len; - tsg_lua_handle lua; + elua_vm *Lua; char *debuginfo = NULL; lua_thread_info_t * thread_info = (lua_thread_info_t *)ptr; char result[512]; @@ -732,7 +732,7 @@ static void *lua_file_handle(void *ptr) memset(debuginfo, 0, 10240); memset(result, 0, sizeof(result)); - lua = tsg_lua_vm_create(); + lua = elua_create_vm(NULL); if (lua == NULL) { pthread_exit(debuginfo); @@ -741,7 +741,7 @@ static void *lua_file_handle(void *ptr) { pthread_exit(debuginfo); } - script_id = tsg_lua_cache_script(lua, script, script_len); + script_id = elua_cache_script(lua, script, script_len); if (script_id < 1) { pthread_exit(debuginfo); diff --git a/example/luatest/tags b/example/luatest/tags index 5fd17d1..909dae5 100644 --- a/example/luatest/tags +++ b/example/luatest/tags @@ -58,12 +58,12 @@ ARCHITECTURE_ID lib/build/CMakeFiles/3.9.2/CompilerIdCXX/CMakeCXXCompilerId.cpp ARCHITECTURE_ID lib/build/CMakeFiles/3.9.2/CompilerIdCXX/CMakeCXXCompilerId.cpp 427;" d file: ARCHITECTURE_ID lib/build/CMakeFiles/3.9.2/CompilerIdCXX/CMakeCXXCompilerId.cpp 430;" d file: ARCHITECTURE_ID lib/build/CMakeFiles/3.9.2/CompilerIdCXX/CMakeCXXCompilerId.cpp 434;" d file: -CMAKE_BINARY_DIR build/Makefile /^CMAKE_BINARY_DIR = \/root\/workspace\/tsg_lua_0.99\/example\/demo_winxinhao\/build$/;" m -CMAKE_BINARY_DIR lib/build/Makefile /^CMAKE_BINARY_DIR = \/root\/workspace\/tsg_lua_0.99\/example\/demo_winxinhao\/lib\/build$/;" m +CMAKE_BINARY_DIR build/Makefile /^CMAKE_BINARY_DIR = \/root\/workspace\/elua_0.99\/example\/demo_winxinhao\/build$/;" m +CMAKE_BINARY_DIR lib/build/Makefile /^CMAKE_BINARY_DIR = \/root\/workspace\/elua_0.99\/example\/demo_winxinhao\/lib\/build$/;" m CMAKE_COMMAND build/Makefile /^CMAKE_COMMAND = \/usr\/local\/bin\/cmake$/;" m CMAKE_COMMAND lib/build/Makefile /^CMAKE_COMMAND = \/usr\/local\/bin\/cmake$/;" m -CMAKE_SOURCE_DIR build/Makefile /^CMAKE_SOURCE_DIR = \/root\/workspace\/tsg_lua_0.99\/example\/demo_winxinhao$/;" m -CMAKE_SOURCE_DIR lib/build/Makefile /^CMAKE_SOURCE_DIR = \/root\/workspace\/tsg_lua_0.99\/example\/demo_winxinhao\/lib$/;" m +CMAKE_SOURCE_DIR build/Makefile /^CMAKE_SOURCE_DIR = \/root\/workspace\/elua_0.99\/example\/demo_winxinhao$/;" m +CMAKE_SOURCE_DIR lib/build/Makefile /^CMAKE_SOURCE_DIR = \/root\/workspace\/elua_0.99\/example\/demo_winxinhao\/lib$/;" m COMPILER_ID build/CMakeFiles/3.9.2/CompilerIdC/CMakeCCompilerId.c 101;" d file: COMPILER_ID build/CMakeFiles/3.9.2/CompilerIdC/CMakeCCompilerId.c 108;" d file: COMPILER_ID build/CMakeFiles/3.9.2/CompilerIdC/CMakeCCompilerId.c 115;" d file: @@ -543,9 +543,9 @@ INPUT_COMPLETE luatest.cpp 110;" d file: INPUT_COMPLETE luatest_old.cpp 80;" d file: IP_HEADER_LEN luatest.cpp 27;" d file: IP_HEADER_LEN luatest_old.cpp 23;" d file: -L luatest.cpp /^ tsg_lua_handle L;$/;" m struct:lua_pacp_info_s file: -L luatest.cpp /^ tsg_lua_handle L;$/;" m struct:lua_text_info_s file: -L luatest_old.cpp /^ tsg_lua_handle L;$/;" m struct:lua_info_s file: +L luatest.cpp /^ elua_vm *L;$/;" m struct:lua_pacp_info_s file: +L luatest.cpp /^ elua_vm *L;$/;" m struct:lua_text_info_s file: +L luatest_old.cpp /^ elua_vm *L;$/;" m struct:lua_info_s file: LIB_COMPLETE luatest.cpp 112;" d file: LIB_COMPLETE luatest_old.cpp 82;" d file: MAC_FRAME_HEADER_LEN luatest.cpp 26;" d file: @@ -853,8 +853,8 @@ lua_pcap_handle luatest.cpp /^void lua_pcap_handle(u_char *userarg, const struct lua_pcap_handle luatest_old.cpp /^void lua_pcap_handle(u_char *userarg, const struct pcap_pkthdr *pkthdr, const u_char *packet)$/;" f lua_pcap_info_t luatest.cpp /^}lua_pcap_info_t;$/;" t typeref:struct:lua_pacp_info_s file: lua_pcap_info_t luatest_old.cpp /^}lua_pcap_info_t;$/;" t typeref:struct:lua_info_s file: -lua_pcap_prefix_handle luatest.cpp /^static void lua_pcap_prefix_handle(lua_thread_info_t *thread_info, char *debuginfo, tsg_lua_handle L, size_t script_id)$/;" f file: -lua_text_handle luatest.cpp /^static void lua_text_handle(lua_text_info_t *text_info, char *debuginfo, tsg_lua_handle lua)$/;" f file: +lua_pcap_prefix_handle luatest.cpp /^static void lua_pcap_prefix_handle(lua_thread_info_t *thread_info, char *debuginfo, elua_vm *L, size_t script_id)$/;" f file: +lua_text_handle luatest.cpp /^static void lua_text_handle(lua_text_info_t *text_info, char *debuginfo, elua_vm *Lua)$/;" f file: lua_text_info_s luatest.cpp /^typedef struct lua_text_info_s$/;" s file: lua_text_info_t luatest.cpp /^}lua_text_info_t;$/;" t typeref:struct:lua_text_info_s file: lua_thread_info_s luatest.cpp /^typedef struct lua_thread_info_s{$/;" s file: diff --git a/example/multithread.cpp b/example/multithread.cpp index a5a2119..a26d656 100644 --- a/example/multithread.cpp +++ b/example/multithread.cpp @@ -12,7 +12,7 @@ extern "C" #include<unistd.h> #include<time.h> } -#include"../src/tsg_lua_interface.h" +#include"../src/elua.h" #ifndef MAX_THREAD_NUM #define MAX_THREAD_NUM 9 #endif @@ -22,7 +22,7 @@ extern "C" typedef struct lua_script_info_s{ const char *script_data; //int script_len; - int script_id; + struct elua_script *escript; }lua_script_info_t; typedef struct lua_data_s{ @@ -33,7 +33,7 @@ typedef struct lua_data_s{ typedef struct{ lua_test_data_t data; int thread_id; - tsg_lua_handle lua; + elua_vm *Lua; }userdata_t; @@ -67,11 +67,14 @@ void debuginfo(int thread_id, char *out, int out_len, int out_type) void *lua_function(void *ptr) { int ret; - char out[255]; - size_t out_len = 0; - size_t out_type = 0; - memset(out, 0, 255); - tsg_lua_handle L = NULL; + + elua_vm *L = NULL; + + char buff[1024]; + struct elua_data output; + output.len = 1024; + output.string = buff; + output.type = STRING; userdata_t *userdata = (userdata_t *)ptr; lua_test_data_t *data = &userdata->data; @@ -79,97 +82,85 @@ void *lua_function(void *ptr) lua_script_info_t script_info[MAX_SCRIPT_NUM] = { - {SCRIPT_PROTOCOL_RECOGNITION, SCRIPT_NO_CACHE}, - {SCRIPT_COUNT_1, SCRIPT_NO_CACHE}, - {SCRIPT_MATCH_12345, SCRIPT_NO_CACHE}, + {SCRIPT_PROTOCOL_RECOGNITION, NULL}, + {SCRIPT_COUNT_1, NULL}, + {SCRIPT_MATCH_12345, NULL}, }; - printf("[C][thread_id:%d]:tsg_lua_vm_create start...\n", thread_id); - L = tsg_lua_vm_create(); + printf("[C][thread_id:%d]:elua_create_vm start...\n", thread_id); + L = elua_create_vm(NULL); if (L == NULL) { - printf("[C][thread_id:%d]:tsg_lua_vm_create failed...\n", thread_id); + printf("[C][thread_id:%d]:elua_create_vm failed...\n", thread_id); return (void *)"lua vm create failed"; } printf("[C][thread_id:%d]:lua:%p ...\n", thread_id, L); - printf("[C][thread_id:%d]:tsg_lua_vm_create success...\n", thread_id); - - printf("[C][thread_id:%d]:tsg_lua_exec_file start...\n", thread_id); - ret = tsg_lua_exec_file(L, script_info[0].script_data, data->data, data->data_len, out, &out_len, &out_type); - if(ret < 0) - { - printf("[C][thread_id:%d]:tsg_lua_exec_file failed...\n", thread_id); - return (void *)"exec failed"; - } - debuginfo(thread_id, out, out_len, out_type); - printf("[C][thread_id:%d]:tsg_lua_exec_file success...\n", thread_id); + printf("[C][thread_id:%d]:elua_create_vm success...\n", thread_id); - printf("[C][thread_id:%d]:tsg_lua_cache_script_file start...\n", thread_id); - script_info[1].script_id = tsg_lua_cache_script_file(L, script_info[1].script_data); - if (script_info[1].script_id < 0) + printf("[C][thread_id:%d]:elua_cache_script_file start...\n", thread_id); + script_info[1].escript = elua_cache_script_file(L, script_info[1].script_data, 0); + if (script_info[1].escript == NULL) { - printf("[C][thread_id:%d]:tsg_lua_cache_script_file failed...\n", thread_id); + printf("[C][thread_id:%d]:elua_cache_script_file failed...\n", thread_id); return (void *)"cache script failed"; } - printf("[C][thread_id:%d]:script_id:%d ...\n", thread_id, script_info[1].script_id); - printf("[C][thread_id:%d]:tsg_lua_cache_script_file success...\n", thread_id); + printf("[C][thread_id:%d]:elua_cache_script_file success...\n", thread_id); - printf("[C][thread_id:%d]:tsg_lua_cache_exec start...\n", thread_id); - ret = tsg_lua_cache_exec(L, script_info[1].script_id, data->data, data->data_len, out, &out_len, &out_type); + printf("[C][thread_id:%d]:elua_execute_script start...\n", thread_id); + ret = elua_execute_script(script_info[1].escript, data->data, data->data_len, NULL, NULL, &output); if(ret < 0) { - printf("[C][thread_id:%d]:tsg_lua_cache_exec failed...\n", thread_id); + printf("[C][thread_id:%d]:elua_execute_script failed...\n", thread_id); return (void *)"cache exec failed"; } - debuginfo(thread_id, out, out_len, out_type); - printf("[C][thread_id:%d]:tsg_lua_cache_exec success...\n", thread_id); + debuginfo(thread_id, output.string, output.len, output.type); + printf("[C][thread_id:%d]:elua_execute_script success...\n", thread_id); - printf("[C][thread_id:%d]:tsg_lua_cache_script_file start...\n", thread_id); - script_info[2].script_id = tsg_lua_cache_script_file(L, script_info[2].script_data); - if (script_info[2].script_id < 0) + printf("[C][thread_id:%d]:elua_cache_script_file start...\n", thread_id); + script_info[2].escript = elua_cache_script_file(L, script_info[2].script_data, 0); + if (script_info[2].escript == NULL) { - printf("[C][thread_id:%d]:tsg_lua_cache_script_file failed...\n", thread_id); + printf("[C][thread_id:%d]:elua_cache_script_file failed...\n", thread_id); return (void *)"cache script failed"; } - printf("[C][thread_id:%d]:script_id:%d ...\n", thread_id, script_info[2].script_id); - printf("[C][thread_id:%d]:tsg_lua_cache_script_file success...\n", thread_id); + printf("[C][thread_id:%d]:elua_cache_script_file success...\n", thread_id); - printf("[C][thread_id:%d]:tsg_lua_cache_exec start...\n", thread_id); - ret = tsg_lua_cache_exec(L, script_info[2].script_id, data->data, data->data_len, out, &out_len, &out_type); + printf("[C][thread_id:%d]:elua_execute_script start...\n", thread_id); + ret = elua_execute_script(script_info[2].escript, data->data, data->data_len, NULL, NULL, &output); if(ret < 0) { - printf("[C][thread_id:%d]:tsg_lua_cache_exec failed...\n", thread_id); + printf("[C][thread_id:%d]:elua_execute_script failed...\n", thread_id); return (void *)"cache exec failed"; } - debuginfo(thread_id, out, out_len, out_type); - printf("[C][thread_id:%d]:tsg_lua_cache_exec success...\n", thread_id); + debuginfo(thread_id, output.string, output.len, output.type); + printf("[C][thread_id:%d]:elua_execute_script success...\n", thread_id); - printf("[C][thread_id:%d]:tsg_lua_uncache_script start...\n", thread_id); - ret = tsg_lua_uncache_script(L, script_info[1].script_id); + printf("[C][thread_id:%d]:elua_cleanup_script start...\n", thread_id); + ret = elua_cleanup_script(script_info[1].escript); if(ret < 0) { - printf("[C][thread_id:%d]:tsg_lua_uncache_script failed...\n", thread_id); + printf("[C][thread_id:%d]:elua_cleanup_script failed...\n", thread_id); return (void *)"uncache script failed"; } printf("[C][thread_id:%d]:tsg_uncache_script success...\n", thread_id); - printf("[C][thread_id:%d]:tsg_lua_uncache_script start...\n", thread_id); - ret = tsg_lua_uncache_script(L, script_info[2].script_id); + printf("[C][thread_id:%d]:elua_cleanup_script start...\n", thread_id); + ret = elua_cleanup_script(script_info[2].escript); if(ret < 0) { - printf("[C][thread_id:%d]:tsg_lua_uncache_script failed...\n", thread_id); + printf("[C][thread_id:%d]:elua_cleanup_script failed...\n", thread_id); return (void *)"uncache script failed"; } printf("[C][thread_id:%d]:tsg_uncache_script success...\n", thread_id); - printf("[C][thread_id:%d]:tsg_destory_lua start...\n", thread_id); - ret = tsg_destory_lua(L); + printf("[C][thread_id:%d]:elua_destroy_vm start...\n", thread_id); + ret = elua_destroy_vm(L); if(ret < 0) { - printf("[C][thread_id:%d]:tsg_destory_lua failed...\n", thread_id); + printf("[C][thread_id:%d]:elua_destroy_vm failed...\n", thread_id); return (void *)"uncache script failed"; } - printf("[C][thread_id:%d]:tsg_destory_lua success...\n", thread_id); + printf("[C][thread_id:%d]:elua_destroy_vm success...\n", thread_id); pthread_exit((void *)"OK"); } @@ -178,7 +169,7 @@ int main(int argc, char *argv[]) { int thread_num; pthread_t thread[MAX_THREAD_NUM] = {0}; - //tsg_lua_handle lua[MAX_THREAD_NUM] = {0}; + //elua_vm *Lua[MAX_THREAD_NUM] = {0}; int thread_sum; int ch, i; char buf[1024]; @@ -254,7 +245,7 @@ int main(int argc, char *argv[]) data->data_len = buf_len; data->data[buf_len] = thread_num; data->data_len++; - //lua[thread_num] = tsg_lua_vm_create(); + //lua[thread_num] = elua_create_vm(NULL); //data->lua = lua[i]; pthread_create(&thread[thread_num], NULL, lua_function, (void *)&userdata[thread_num]); } diff --git a/example/single_thread.cpp b/example/single_thread.cpp index d188c0f..3778156 100644 --- a/example/single_thread.cpp +++ b/example/single_thread.cpp @@ -8,7 +8,7 @@ extern "C" #include<stdio.h> #include<string.h> } -#include"../src/tsg_lua_interface.h" +#include"../src/elua.h" char *content0 = (char *)"HanMeimei said \"hello\" to LiLei"; char content1[255]; @@ -19,6 +19,7 @@ int main() { const char *script = "./script/find_hello.lua"; const char *script1 = "./script/find_1.luajit"; + #if 0 const char *script2 = "local str = tsg.data print(str) return string.len(str), str"; const char *script3 = "\x1B\x4C\x4A\x02\x0A\x75\x02\x00"\ "\x04\x00\x07\x00\x11\x36\x00\x00"\ @@ -36,307 +37,123 @@ int main() "\x2D\x2D\x2D\x2D\x0A\x70\x72\x69"\ "\x6E\x74\x09\x64\x61\x74\x61\x08"\ "\x74\x73\x67\x00"; - tsg_lua_handle L = NULL; + #endif + elua_vm *L = NULL; content1[128] = 1; //memset(content1, 1, sizeof(content1)); /* 初始化1个虚拟机 */ - printf("\n*********************tsg_lua_vm_create************************\n"); - printf("[C]:call tsg_lua_vm_create...\n"); - L = tsg_lua_vm_create(); + printf("\n*********************elua_create_vm************************\n"); + printf("[C]:call elua_create_vm...\n"); + L = elua_create_vm(NULL); if (L == NULL) { - printf("[C]:call tsg_lua_vm_create failed.\n"); + printf("[C]:call elua_create_vm failed.\n"); return -1; } - printf("[C]:call tsg_lua_vm_create success.\t lua:%p\n", L); + printf("[C]:call elua_create_vm success.\t lua:%p\n", L); - char out[255]; - memset(out, 0, sizeof(out)); - size_t out_len; - size_t out_type; - printf("\n=============================file==================================\n"); - printf("\n*********************tsg_lua_exec_file************************\n"); - printf("[C]:call tsg_lua_exec_file, exec %s ...\n", script); - int ret = tsg_lua_exec_file(L, script, content0, strlen(content0), out, &out_len, &out_type); - if (ret < 0) - { - printf("[C]:call tsg_lua_exec_file failed.\n"); - return -1; - } - printf("[C]:call tsg_lua_exec_file success.\n"); - printf("[C]:out_len:%zu\n", out_len); - printf("[C]:out_type:%zu\n", out_type); - switch(out_type) - { - case STRING: - printf("[C]:out_data:%s\n", out); - break; - case INTEGER: - printf("[C]:out_data:%ld\n", *(long int *)out); - break; - case BOOLEAN: - printf("[C]:out_data:%d\n", out[0]); - break; - } - - printf("\n*********************tsg_lua_exec_file************************\n"); - printf("[C]:call tsg_lua_exec_file, exec %s ...\n", script1); - ret = tsg_lua_exec_file(L, script1, content0, strlen(content0), out, &out_len, &out_type); - if (ret < 0) - { - printf("[C]:call tsg_lua_exec_file failed.\n"); - return -1; - } - printf("[C]:call tsg_lua_exec_file success.\n"); - printf("[C]:out_len:%zu\n", out_len); - printf("[C]:out_type:%zu\n", out_type); - switch(out_type) - { - case STRING: - printf("[C]:out_data:%s\n", out); - break; - case INTEGER: - printf("[C]:out_data:%ld\n", *(long int *)out); - break; - case BOOLEAN: - printf("[C]:out_data:%d\n", out[0]); - break; - } + struct elua_data output; + output.type = STRING; + output.len = 1024; + char buff[1024]; + memset(buff, 0, 1024); + output.string = buff; /* lua 缓存脚本, 再运行 */ - memset(out, 0, sizeof(out)); - printf("\n*********************tsg_lua_cache_script_file************************\n"); - printf("[C]: call tsg_lua_cache_script_file, script:%s ...\n", script); - int script_id = tsg_lua_cache_script_file(L, script); - if (script_id < 0) + printf("\n*********************elua_cache_script_file************************\n"); + printf("[C]: call elua_cache_script_file, script:%s ...\n", script); + struct elua_script *escript = elua_cache_script_file(L, script, 0); + if (escript == NULL) { - printf("[C]: call tsg_lua_cache_script_file failed.\n"); + printf("[C]: call elua_cache_script_file failed.\n"); return -1; } - printf("[C]: call tsg_lua_cache_script_file success.\t script_id:%d\n", script_id); + printf("[C]: call elua_cache_script_file success.\n"); - printf("\n*********************tsg_lua_cache_exec************************\n"); - printf("[C]: call tsg_lua_cache_exec ...\n"); - ret = tsg_lua_cache_exec(L, script_id, content1, 255, out, &out_len, &out_type); + printf("\n*********************elua_execute_script************************\n"); + printf("[C]: call elua_execute_script ...\n"); + int ret = elua_execute_script(escript, content1, 255, NULL, NULL, &output); if (ret < 0) { - printf("[C]: call tsg_lua_cache_exec failed.\n"); + printf("[C]: call elua_execute_script failed.\n"); return -1; } - printf("[C]: call tsg_lua_cache_exec success\n"); - printf("[C]:out_len:%zu\n", out_len); - printf("[C]:out_type:%zu\n", out_type); - switch(out_type) + printf("[C]: call elua_execute_script success\n"); + printf("[C]:out_len:%zu\n", output.len); + printf("[C]:out_type:%d\n", output.type); + switch(output.type) { case STRING: - printf("[C]:out_data:%s\n", out); + printf("[C]:out_data:%s\n", output.string); break; case BOOLEAN: - printf("[C]:out_data:%d\n", out[0]); + printf("[C]:out_data:%d\n", output.true_or_false); break; case INTEGER: - printf("[C]:out_data:%ld\n", *(long int *)out); + printf("[C]:out_data:%ld\n", *(long int *)output.integer); + break; + default: break; } - memset(out, 0, sizeof(out)); - printf("\n*********************tsg_lua_cache_script_file************************\n"); - printf("[C]: call tsg_lua_cache_script_file, script:%s ...\n", script1); - int script_id1 = tsg_lua_cache_script_file(L, script1); - if (script_id1 < 0) + printf("\n*********************elua_cache_script_file************************\n"); + printf("[C]: call elua_cache_script_file, script:%s ...\n", script1); + struct elua_script *escript1 = elua_cache_script_file(L, script1, 0); + if (escript1 == NULL) { - printf("[C]: call tsg_lua_cache_script_file failed.\n"); + printf("[C]: call elua_cache_script_file failed.\n"); return -1; } - printf("[C]: call tsg_lua_cache_script_file success.\t script_id:%d\n", script_id1); + printf("[C]: call elua_cache_script_file success.\n"); - printf("\n*********************tsg_lua_cache_exec************************\n"); - printf("[C]: call tsg_lua_cache_exec ...\n"); - ret = tsg_lua_cache_exec(L, script_id1, content1, 255, out, &out_len, &out_type); + printf("\n*********************elua_execute_script************************\n"); + printf("[C]: call elua_execute_script ...\n"); + ret = elua_execute_script(escript1, content1, 255, NULL, NULL, &output); if (ret < 0) { - printf("[C]: call tsg_lua_cache_exec failed.\n"); + printf("[C]: call elua_execute_script failed.\n"); return -1; } - printf("[C]: call tsg_lua_cache_exec success\n"); - printf("[C]:out_len:%zu\n", out_len); - printf("[C]:out_type:%zu\n", out_type); - switch(out_type) + printf("[C]: call elua_execute_script success\n"); + printf("[C]:out_len:%zu\n", output.len); + printf("[C]:out_type:%d\n", output.type); + switch(output.type) { case STRING: - printf("[C]:out_data:%s\n", out); + printf("[C]:out_data:%s\n", output.string); break; case BOOLEAN: - printf("[C]:out_data:%d\n", out[0]); + printf("[C]:out_data:%d\n", output.true_or_false); break; case INTEGER: - printf("[C]:out_data:%ld\n", *(long int *)out); + printf("[C]:out_data:%ld\n", output.integer); break; - } - - /****************************************************************************************/ - printf("\n=============================string==================================\n"); - memset(out, 0, sizeof(out)); - printf("\n*********************tsg_lua_exec************************\n"); - printf("[C]: call tsg_lua_exec, text-script ...\n"); - ret = tsg_lua_exec(L, script2, strlen(script2), "hello wrold", 11, out, &out_len, &out_type); - if (ret < 0) - { - printf("[C]: call tsg_lua_exec failed ...\n"); - return -1; - } - printf("[C]: call tsg_lua_exec success ...\n"); - printf("[C]:out_len:%zu\n", out_len); - printf("[C]:out_type:%zu\n", out_type); - switch(out_type) - { - case STRING: - printf("[C]:out_data:%s\n", out); - break; - case BOOLEAN: - printf("[C]:out_data:%d\n", out[0]); - break; - case INTEGER: - printf("[C]:out_data:%ld\n", *(long int *)out); + default: break; } - memset(out, 0, sizeof(out)); - printf("\n*********************tsg_lua_exec************************\n"); - printf("[C]: call tsg_lua_exec, bytecode-script ...\n"); - ret = tsg_lua_exec(L, script3, 124, "hello wrold", 11, out, &out_len, &out_type); - if (ret < 0) - { - printf("[C]: call tsg_lua_exec failed ...\n"); - return -1; - } - printf("[C]: call tsg_lua_exec success ...\n"); - printf("[C]:out_len:%zu\n", out_len); - printf("[C]:out_type:%zu\n", out_type); - switch(out_type) - { - case STRING: - printf("[C]:out_data:%s\n", out); - break; - case BOOLEAN: - printf("[C]:out_data:%d\n", out[0]); - break; - case INTEGER: - printf("[C]:out_data:%ld\n", *(long int *)out); - break; - } - memset(out, 0, sizeof(out)); - printf("\n*********************tsg_lua_cache_script************************\n"); - printf("[C]: call tsg_lua_cache_script, text-script ...\n"); - int script_id2 = tsg_lua_cache_script(L, script2, strlen(script2)); - if (script_id2 < 0) - { - printf("[C]: call tsg_lua_cache_script failed.\n"); - return -1; - } - printf("[C]: call tsg_lua_cache_script success.\t script_id:%d\n", script_id2); - - printf("\n*********************tsg_lua_cache_exec************************\n"); - printf("[C]: call tsg_lua_cache_exec ...\n"); - ret = tsg_lua_cache_exec(L, script_id2, "hello wrold", 11, out, &out_len, &out_type); - if (ret < 0) - { - printf("[C]: call tsg_lua_cache_exec failed.\n"); - return -1; - } - printf("[C]: call tsg_lua_cache_exec success\n"); - printf("[C]:out_len:%zu\n", out_len); - printf("[C]:out_type:%zu\n", out_type); - switch(out_type) - { - case STRING: - printf("[C]:out_data:%s\n", out); - break; - case BOOLEAN: - printf("[C]:out_data:%d\n", out[0]); - break; - case INTEGER: - printf("[C]:out_data:%ld\n", *(long int *)out); - break; - } - memset(out, 0, sizeof(out)); - printf("\n*********************tsg_lua_cache_script************************\n"); - printf("[C]: call tsg_lua_cache_script, text-script ...\n"); - int script_id3 = tsg_lua_cache_script(L, script3, 124); - if (script_id3 < 0) - { - printf("[C]: call tsg_lua_cache_script failed.\n"); - return -1; - } - printf("[C]: call tsg_lua_cache_script success.\t script_id:%d\n", script_id3); - - printf("\n*********************tsg_lua_cache_exec************************\n"); - printf("[C]: call tsg_lua_cache_exec ...\n"); - ret = tsg_lua_cache_exec(L, script_id3, "hello world", 11, out, &out_len, &out_type); - if (ret < 0) - { - printf("[C]: call tsg_lua_cache_exec failed.\n"); - return -1; - } - printf("[C]: call tsg_lua_cache_exec success\n"); - printf("[C]:out_len:%zu\n", out_len); - printf("[C]:out_type:%zu\n", out_type); - switch(out_type) - { - case STRING: - printf("[C]:out_data:%s\n", out); - break; - case BOOLEAN: - printf("[C]:out_data:%d\n", out[0]); - break; - case INTEGER: - printf("[C]:out_data:%ld\n", *(long int *)out); - break; - } /* lua 注销脚本 */ - memset(out, 0, sizeof(out)); - printf("\n*********************tsg_lua_uncache_script************************\n"); - printf("[C]: call tsg_lua_uncache_script, script_id:%d ...\n", script_id); - ret = tsg_lua_uncache_script(L, script_id); - if (ret < 0) - { - printf("[C]: call tsg_lua_uncache_script failed.\n"); - return -1; - } - printf("[C]: call tsg_lua_uncache_script success\n"); - printf("\n*********************tsg_lua_uncache_script************************\n"); - printf("[C]: call tsg_lua_uncache_script, script_id:%d ...\n", script_id1); - ret = tsg_lua_uncache_script(L, script_id1); + printf("\n*********************elua_cleanup_script************************\n"); + printf("[C]: call elua_cleanup_script...\n"); + ret = elua_cleanup_script(escript); if (ret < 0) { - printf("[C]: call tsg_lua_uncache_script failed.\n"); + printf("[C]: call elua_cleanup_script failed.\n"); return -1; } - printf("[C]: call tsg_lua_uncache_script success\n"); - printf("\n*********************tsg_lua_uncache_script************************\n"); - printf("[C]: call tsg_lua_uncache_script, script_id:%d ...\n", script_id2); - ret = tsg_lua_uncache_script(L, script_id2); + printf("[C]: call elua_cleanup_script success\n"); + printf("\n*********************elua_cleanup_script************************\n"); + printf("[C]: call elua_cleanup_script...\n"); + ret = elua_cleanup_script(escript1); if (ret < 0) { - printf("[C]: call tsg_lua_uncache_script failed.\n"); + printf("[C]: call elua_cleanup_script failed.\n"); return -1; } - printf("[C]: call tsg_lua_uncache_script success\n"); - printf("\n*********************tsg_lua_uncache_script************************\n"); - printf("[C]: call tsg_lua_uncache_script, script_id:%d ...\n", script_id3); - ret = tsg_lua_uncache_script(L, script_id3); - if (ret < 0) - { - printf("[C]: call tsg_lua_uncache_script failed.\n"); - return -1; - } - printf("[C]: call tsg_lua_uncache_script success\n"); - - tsg_lua_cache_exec(L, script_id, content1, 255, out, &out_len, &out_type); - + printf("[C]: call elua_cleanup_script success\n"); /* 关闭lua */ - tsg_destory_lua(L); + elua_destroy_vm(L); printf("[C]:Every day is good day!\n"); return 0; |
