diff options
| author | pengxuanzheng <[email protected]> | 2020-08-24 17:10:55 +0800 |
|---|---|---|
| committer | pengxuanzheng <[email protected]> | 2020-08-24 17:10:55 +0800 |
| commit | 503f4af4d8514913eb2ad0405b557abfd4326976 (patch) | |
| tree | 5dd4f67e39f543c1cb1e2048eae0c0f720691c58 /example | |
Initial commit
Diffstat (limited to 'example')
| -rw-r--r-- | example/CMakeLists.txt | 14 | ||||
| -rwxr-xr-x | example/multithread | bin | 0 -> 25480 bytes | |||
| -rw-r--r-- | example/multithread.cpp | 265 | ||||
| -rw-r--r-- | example/script/count_1.lua | 16 | ||||
| -rw-r--r-- | example/script/find_1.lua | 13 | ||||
| -rw-r--r-- | example/script/find_1.luajit | bin | 0 -> 267 bytes | |||
| -rw-r--r-- | example/script/find_1_b.lua | bin | 0 -> 371 bytes | |||
| -rw-r--r-- | example/script/find_hello.lua | 8 | ||||
| -rw-r--r-- | example/script/find_hello.luajit | bin | 0 -> 324 bytes | |||
| -rw-r--r-- | example/script/match_12345.lua | 24 | ||||
| -rw-r--r-- | example/script/print_hello.lua | 5 | ||||
| -rw-r--r-- | example/script/print_hello.luajit | bin | 0 -> 124 bytes | |||
| -rw-r--r-- | example/script/protocol_recognition.lua | 79 | ||||
| -rwxr-xr-x | example/single_thread | bin | 0 -> 25696 bytes | |||
| -rw-r--r-- | example/single_thread.cpp | 344 |
15 files changed, 768 insertions, 0 deletions
diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt new file mode 100644 index 0000000..f696207 --- /dev/null +++ b/example/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.5) +project (single_thread) +project (multithread) + +link_directories("/root/workspace/tsg_lua_0.99/lib") +link_libraries(tsglua pthread) + +add_definitions(-g -W -Wall) + +add_executable(single_thread single_thread.cpp) +add_executable(multithread multithread.cpp) +target_link_libraries(single_thread tsglua) +target_link_libraries(multithread tsglua) + diff --git a/example/multithread b/example/multithread Binary files differnew file mode 100755 index 0000000..d7d9dbd --- /dev/null +++ b/example/multithread diff --git a/example/multithread.cpp b/example/multithread.cpp new file mode 100644 index 0000000..26b45ec --- /dev/null +++ b/example/multithread.cpp @@ -0,0 +1,265 @@ +/************************************************************************* + > File Name: main.c + > Author: pxz + > Mail: [email protected] + > Created Time: Thu 09 Jul 2020 07:08:40 AM CST + ************************************************************************/ +extern "C" +{ + #include<stdio.h> + #include<stdlib.h> + #include<string.h> + #include<pthread.h> + #include<unistd.h> + #include<time.h> +} +#include"../include/tsg_lua_interface.h" +#ifndef MAX_THREAD_NUM +#define MAX_THREAD_NUM 9 +#endif +#define MAX_SCRIPT_NUM 3 +#define SCRIPT_NO_CACHE -1 + +typedef struct lua_script_info_s{ + const char *script_data; + int script_len; + int script_id; +}lua_script_info_t; + +typedef struct lua_data_s{ + char data[1024]; + int data_len; +}lua_data_t; + +typedef struct{ + lua_data_t data; + int thread_id; +}userdata_t; + + +/* 存储脚本以及脚本id */ +#define SCRIPT_PROTOCOL_RECOGNITION "./script/protocol_recognition.lua" +#define SCRIPT_COUNT_1 "./script/count_1.lua" +#define SCRIPT_MATCH_12345 "./script/match_12345.lua" + +void debuginfo(int thread_id, char *out, int out_len, int out_type) +{ + printf("[C][thread_id:%d]output.len:%d\n", thread_id, out_len); + printf("[C][thread_id:%d]output.type:%d\n", thread_id, out_type); + switch(out_type) + { + case STRING: + printf("[C][thread_id:%d]output.data:%s\n", thread_id, out); + break; + case BOOLEAN: + printf("[C][thread_id:%d]outpt.data:%d\n", thread_id, out[0]); + break; + case INTEGER: + printf("[C][thread_id:%d]outpt.data:%ld\n", thread_id, *(long int *)out); + break; + default: + + break; + } + return; +} + +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; + + userdata_t *userdata = (userdata_t *)ptr; + lua_data_t *data = &userdata->data; + int thread_id = userdata->thread_id; + + lua_script_info_t script_info[MAX_SCRIPT_NUM] = + { + {SCRIPT_PROTOCOL_RECOGNITION, (int)strlen(SCRIPT_PROTOCOL_RECOGNITION), SCRIPT_NO_CACHE}, + {SCRIPT_COUNT_1, (int)strlen(SCRIPT_COUNT_1), SCRIPT_NO_CACHE}, + {SCRIPT_MATCH_12345, (int)strlen(SCRIPT_MATCH_12345), SCRIPT_NO_CACHE}, + }; + + printf("[C][thread_id:%d]:tsg_lua_vm_create start...\n", thread_id); + L = tsg_lua_vm_create(); + if (L == NULL) + { + printf("[C][thread_id:%d]:tsg_lua_vm_create 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]: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]:tsg_lua_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]: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); + if(ret < 0) + { + printf("[C][thread_id:%d]:tsg_lua_cache_exec 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); + + 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]:tsg_lua_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]: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); + if(ret < 0) + { + printf("[C][thread_id:%d]:tsg_lua_cache_exec 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); + + printf("[C][thread_id:%d]:tsg_lua_uncache_script start...\n", thread_id); + ret = tsg_lua_uncache_script(L, script_info[1].script_id); + if(ret < 0) + { + printf("[C][thread_id:%d]:tsg_lua_uncache_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); + if(ret < 0) + { + printf("[C][thread_id:%d]:tsg_lua_uncache_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); + if(ret < 0) + { + printf("[C][thread_id:%d]:tsg_destory_lua failed...\n", thread_id); + return (void *)"uncache script failed"; + } + printf("[C][thread_id:%d]:tsg_destory_lua success...\n", thread_id); + pthread_exit((void *)"OK"); +} + + +int main(int argc, char *argv[]) +{ + int thread_num; + pthread_t thread[MAX_THREAD_NUM] = {0}; + int thread_sum; + int ch, i; + char buf[1024]; + int buf_len; + userdata_t userdata[MAX_THREAD_NUM] = {0}; + lua_data_t *data = NULL; + char *retval; + +#ifndef MIN +#define MIN(a, b) ((a) > (b) ?(b):(a)) +#endif + + /* default */ + thread_sum = 3; + strcpy(buf, "this is tcp"); + buf_len = strlen("this is tcp"); + + while((ch = getopt(argc, argv, "t:s:b:d:h")) != -1) + { + switch(ch) + { + case 't': + thread_sum = atoi(optarg); + if (thread_sum > MAX_THREAD_NUM) + { + printf("MAX_THREAD_NUM is %d\n",MAX_THREAD_NUM); + thread_sum = MAX_THREAD_NUM; + } + break; + case 's': + buf_len = MIN(1024, strlen(optarg)); + strncpy(buf, optarg, buf_len); + buf[buf_len] = '\0'; + break; + case 'b': + buf_len = MIN(1024, strlen(optarg)); + for (i = 0; i < buf_len; i++) + { + if ((optarg[i] != '0') && (optarg[i] != '1')) + { + printf("error: input wrong\n"); + return -1; + } + buf[i] = optarg[i] - '0'; + } + break; + case 'd': + buf_len = MIN(1024, strlen(optarg)); + for (i = 0; i < buf_len; i++) + { + if ((optarg[i] < '0') && (optarg[i] > '9')) + { + printf("error: input wrong\n"); + return -1; + } + buf[i] = optarg[i] - '0'; + } + break; + case 'h': + default: + printf("usage: multithread [-t set thread num] [-s input string] [-b input bin] [-d input integer] [-h show help info]\n"); + return -1; + break; + } + } + + for (thread_num = 0; thread_num < thread_sum; thread_num++) + { + userdata[thread_num].thread_id = thread_num; + data = &userdata[thread_num].data; + memcpy(data->data, buf, buf_len); + data->data_len = buf_len; + data->data[buf_len] = thread_num; + data->data_len++; + pthread_create(&thread[thread_num], NULL, lua_function, (void *)&userdata[thread_num]); + } + + for (thread_num = 0; thread_num < thread_sum; thread_num++) + { + pthread_join(thread[thread_num], (void **)&retval); + printf("[C][thread_id:%d]: %s\n", thread_num, retval); + } + + return 0; +} diff --git a/example/script/count_1.lua b/example/script/count_1.lua new file mode 100644 index 0000000..21e5091 --- /dev/null +++ b/example/script/count_1.lua @@ -0,0 +1,16 @@ +local str = tsg.data +local len = string.len(str) +local thread_id = string.byte(str, len) +local str = string.format("[lua][thread_id:%d][count_1.lua]:str:%s, len:%d", thread_id, str, len - 1) +print(str) +local cnt = 0 +local i = 0 +for i = 0, len - 1 do + --print(i, string.byte(str, i), cnt) + if string.byte(str, i) == 1 then + cnt = cnt + 1 + end +end +str = string.format("[lua][thread_id:%d][count_1.lua]:return %d, %s", thread_id, 8, cnt) +print(str) +return 8, cnt diff --git a/example/script/find_1.lua b/example/script/find_1.lua new file mode 100644 index 0000000..2c6e865 --- /dev/null +++ b/example/script/find_1.lua @@ -0,0 +1,13 @@ +local data = tsg.data +local data_len = string.len(data) +local str = string.format("[lua]:data:%s len:%d", data, data_len) +print(str) +for i = 1, data_len do + if string.byte(data, i) == 1 then + str = string.format("[lua]:return %d, %d", 8, i) + print(str); + return 8, i + end +end +return 1, true + diff --git a/example/script/find_1.luajit b/example/script/find_1.luajit Binary files differnew file mode 100644 index 0000000..b558ed1 --- /dev/null +++ b/example/script/find_1.luajit diff --git a/example/script/find_1_b.lua b/example/script/find_1_b.lua Binary files differnew file mode 100644 index 0000000..d04801f --- /dev/null +++ b/example/script/find_1_b.lua diff --git a/example/script/find_hello.lua b/example/script/find_hello.lua new file mode 100644 index 0000000..89037c0 --- /dev/null +++ b/example/script/find_hello.lua @@ -0,0 +1,8 @@ +local ss = tsg.data +print("[lua]:the parameter of lua function is '"..ss.."'") +print("[lua]:start find 'hello'...") +local index_s, index_e = string.find(ss, 'hello') +local str = 'find!' +print("[lua]:result, start at", index_s, ", end at",index_e) +print("[lua]: return ", string.len(str), str) +return string.len(str), str diff --git a/example/script/find_hello.luajit b/example/script/find_hello.luajit Binary files differnew file mode 100644 index 0000000..ba644ec --- /dev/null +++ b/example/script/find_hello.luajit diff --git a/example/script/match_12345.lua b/example/script/match_12345.lua new file mode 100644 index 0000000..c795bd3 --- /dev/null +++ b/example/script/match_12345.lua @@ -0,0 +1,24 @@ +local str = tsg.data +local len = string.len(str) +local thread_id = string.byte(str, len) +local str = string.format("[lua][thread_id:%d][match_12345.lua]:str:%s, len:%d", thread_id, str, len - 1) +print(str) +local i = 0 +for i = 1, string.len(str) do + if string.byte(str, i) == 1 then + if string.byte(str, i + 1) == 2 then + if string.byte(str, i + 2) == 3 then + if string.byte(str, i + 3) == 4 then + if string.byte(str, i + 4) == 5 then + local str = string.format("[lua][thread_id:%d][match_12345.lua]:return %d, %s", thread_id, 1, "true") + print(str) + return 1, true + end + end + end + end + end +end +local str = string.format("[lua][thread_id:%d][match_12345.lua]:return %d, %s", thread_id, 1, "false") +print(str) +return 1, false diff --git a/example/script/print_hello.lua b/example/script/print_hello.lua new file mode 100644 index 0000000..ee823e7 --- /dev/null +++ b/example/script/print_hello.lua @@ -0,0 +1,5 @@ +local str = tsg.data +print("-----------") +print("str") +print("-----------") +return string.len(str), str diff --git a/example/script/print_hello.luajit b/example/script/print_hello.luajit Binary files differnew file mode 100644 index 0000000..c9eb05b --- /dev/null +++ b/example/script/print_hello.luajit diff --git a/example/script/protocol_recognition.lua b/example/script/protocol_recognition.lua new file mode 100644 index 0000000..0987232 --- /dev/null +++ b/example/script/protocol_recognition.lua @@ -0,0 +1,79 @@ +local str = tsg.data; +local len = string.len(str) +local thread_id = string.byte(str, -1) +local info = string.format("[lua][thread_id:%d][protocol_recognition.lua]:str:%s, str_len:%d", thread_id, str, len - 1) +print(info) +local ret = "unrecognition." +local index, _ = string.find(str, "tcp") +if index then + ret = "tcp" + info = string.format("[lua][thread_id:%d][protocol_recognition.lua]:return str_len:%d, str:%s", thread_id, string.len(ret), ret) + print(info) + return string.len(ret), ret +end +index, _ = string.find(str, "udp") +if index then + ret = "udp" + info = string.format("[lua][thread_id:%d][protocol_recognition.lua]:return str_len:%d, str:%s", thread_id, string.len(ret), ret) + print(info) + return string.len(ret), ret +end +index, _ = string.find(str, "ssh") +if index then + ret = "ssh" + info = string.format("[lua][thread_id:%d][protocol_recognition.lua]:return str_len:%d, str:%s", thread_id, string.len(ret), ret) + print(info) + return string.len(ret), ret +end +index, _ = string.find(str, "vnc") +if index then + ret = "vnc" + info = string.format("[lua][thread_id:%d][protocol_recognition.lua]:return str_len:%d, str:%s", thread_id, string.len(ret), ret) + print(info) + return string.len(ret), ret +end +index, _ = string.find(str, "sock") +if index then + ret = "sock" + info = string.format("[lua][thread_id:%d][protocol_recognition.lua]:return str_len:%d, str:%s", thread_id, string.len(ret), ret) + print(info) + return string.len(ret), ret +end +index, _ = string.find(str, "quic") +if index then + ret = "quic" + info = string.format("[lua][thread_id:%d][protocol_recognition.lua]:return str_len:%d, str:%s", thread_id, string.len(ret), ret) + print(info) + return string.len(ret), ret +end +index, _ = string.find(str, "pop3") +if index then + ret = "pop3" + info = string.format("[lua][thread_id:%d][protocol_recognition.lua]:return str_len:%d, str:%s", thread_id, string.len(ret), ret) + print(info) + return string.len(ret), ret +end +index, _ = string.find(str, "smpt") +if index then + ret = "smpt" + info = string.format("[lua][thread_id:%d][protocol_recognition.lua]:return str_len:%d, str:%s", thread_id, string.len(ret), ret) + print(info) + return string.len(ret), ret +end +index, _ = string.find(str, "imap") +if index then + ret = "imap" + info = string.format("[lua][thread_id:%d][protocol_recognition.lua]:return str_len:%d, str:%s", thread_id, string.len(ret), ret) + print(info) + return string.len(ret), ret +end +index, _ = string.find(str, "http") +if index then + ret = "http" + info = string.format("[lua][thread_id:%d][protocol_recognition.lua]:return str_len:%d, str:%s", thread_id, string.len(ret), ret) + print(info) + return string.len(ret), ret +end +info = string.format("[lua][thread_id:%d][protocol_recognition.lua]:return str_len:%d, str:%s", thread_id, string.len(ret), ret) +print(info) +return string.len(ret), ret diff --git a/example/single_thread b/example/single_thread Binary files differnew file mode 100755 index 0000000..c460291 --- /dev/null +++ b/example/single_thread diff --git a/example/single_thread.cpp b/example/single_thread.cpp new file mode 100644 index 0000000..b4efcc4 --- /dev/null +++ b/example/single_thread.cpp @@ -0,0 +1,344 @@ +/************************************************************************* + > File Name: main.c + > Author: pxz + > Mail: [email protected] + > Created Time: Thu 09 Jul 2020 07:08:40 AM CST + ************************************************************************/ +extern "C" +{ + #include<stdio.h> + #include<string.h> +} +#include"../include/tsg_lua_interface.h" +char *content0 = (char *)"HanMeimei said \"hello\" to LiLei"; +char content1[255]; + +char *contents[] ={content0, content1}; + + +int main() +{ + const char *script = "./script/find_hello.lua"; + const char *script1 = "./script/find_1.luajit"; + 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"\ + "\x00\x39\x00\x01\x00\x36\x01\x02"\ + "\x00\x27\x03\x03\x00\x42\x01\x02"\ + "\x01\x36\x01\x02\x00\x27\x03\x04"\ + "\x00\x42\x01\x02\x01\x36\x01\x02"\ + "\x00\x27\x03\x03\x00\x42\x01\x02"\ + "\x01\x36\x01\x05\x00\x39\x01\x06"\ + "\x01\x12\x03\x00\x00\x42\x01\x02"\ + "\x02\x12\x02\x00\x00\x4A\x01\x03"\ + "\x00\x08\x6C\x65\x6E\x0B\x73\x74"\ + "\x72\x69\x6E\x67\x08\x73\x74\x72"\ + "\x10\x2D\x2D\x2D\x2D\x2D\x2D\x2D"\ + "\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; + 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(); + if (L == NULL) + { + printf("[C]:call tsg_lua_vm_create failed.\n"); + return -1; + } + printf("[C]:call tsg_lua_vm_create 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:%ld\n", out_len); + printf("[C]:out_type:%ld\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:%ld\n", out_len); + printf("[C]:out_type:%ld\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; + } + + /* 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("[C]: call tsg_lua_cache_script_file failed.\n"); + return -1; + } + printf("[C]: call tsg_lua_cache_script_file success.\t script_id:%d\n", script_id); + + 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); + 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:%ld\n", out_len); + printf("[C]:out_type:%ld\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_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("[C]: call tsg_lua_cache_script_file failed.\n"); + return -1; + } + printf("[C]: call tsg_lua_cache_script_file success.\t script_id:%d\n", script_id1); + + 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); + 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:%ld\n", out_len); + printf("[C]:out_type:%ld\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; + } + + /****************************************************************************************/ + 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:%ld\n", out_len); + printf("[C]:out_type:%ld\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_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:%ld\n", out_len); + printf("[C]:out_type:%ld\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:%ld\n", out_len); + printf("[C]:out_type:%ld\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:%ld\n", out_len); + printf("[C]:out_type:%ld\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); + 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_id2); + ret = tsg_lua_uncache_script(L, script_id2); + 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_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); + + + /* 关闭lua */ + tsg_destory_lua(L); + printf("[C]:Every day is good day!\n"); + + return 0; +} |
