summaryrefslogtreecommitdiff
path: root/example
diff options
context:
space:
mode:
authorpengxuanzheng <[email protected]>2020-08-24 17:10:55 +0800
committerpengxuanzheng <[email protected]>2020-08-24 17:10:55 +0800
commit503f4af4d8514913eb2ad0405b557abfd4326976 (patch)
tree5dd4f67e39f543c1cb1e2048eae0c0f720691c58 /example
Initial commit
Diffstat (limited to 'example')
-rw-r--r--example/CMakeLists.txt14
-rwxr-xr-xexample/multithreadbin0 -> 25480 bytes
-rw-r--r--example/multithread.cpp265
-rw-r--r--example/script/count_1.lua16
-rw-r--r--example/script/find_1.lua13
-rw-r--r--example/script/find_1.luajitbin0 -> 267 bytes
-rw-r--r--example/script/find_1_b.luabin0 -> 371 bytes
-rw-r--r--example/script/find_hello.lua8
-rw-r--r--example/script/find_hello.luajitbin0 -> 324 bytes
-rw-r--r--example/script/match_12345.lua24
-rw-r--r--example/script/print_hello.lua5
-rw-r--r--example/script/print_hello.luajitbin0 -> 124 bytes
-rw-r--r--example/script/protocol_recognition.lua79
-rwxr-xr-xexample/single_threadbin0 -> 25696 bytes
-rw-r--r--example/single_thread.cpp344
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
new file mode 100755
index 0000000..d7d9dbd
--- /dev/null
+++ b/example/multithread
Binary files differ
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
+ > 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
new file mode 100644
index 0000000..b558ed1
--- /dev/null
+++ b/example/script/find_1.luajit
Binary files differ
diff --git a/example/script/find_1_b.lua b/example/script/find_1_b.lua
new file mode 100644
index 0000000..d04801f
--- /dev/null
+++ b/example/script/find_1_b.lua
Binary files differ
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
new file mode 100644
index 0000000..ba644ec
--- /dev/null
+++ b/example/script/find_hello.luajit
Binary files differ
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
new file mode 100644
index 0000000..c9eb05b
--- /dev/null
+++ b/example/script/print_hello.luajit
Binary files differ
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
new file mode 100755
index 0000000..c460291
--- /dev/null
+++ b/example/single_thread
Binary files differ
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
+ > 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;
+}