diff options
author | osch <oliver at luced de> | 2018-08-27 19:06:15 +0200 |
---|---|---|
committer | osch <oliver at luced de> | 2018-08-27 19:06:15 +0200 |
commit | cd91518d79388d5d42820a2b48918a7bf1e6d1a2 (patch) | |
tree | 07d166e87c2f294a0864501756e48d3c313309bb | |
parent | 99e9a506b4f0f2dcefb1844092553ca4ffa81087 (diff) | |
download | lua-llthreads2-cd91518d79388d5d42820a2b48918a7bf1e6d1a2.tar.gz lua-llthreads2-cd91518d79388d5d42820a2b48918a7bf1e6d1a2.tar.bz2 lua-llthreads2-cd91518d79388d5d42820a2b48918a7bf1e6d1a2.zip |
interrupted error message now contains llthreads module name as prefix and
is also available in the public api
-rw-r--r-- | src/llthread.c | 14 | ||||
-rw-r--r-- | test/test_interrupt.lua | 6 |
2 files changed, 15 insertions, 5 deletions
diff --git a/src/llthread.c b/src/llthread.c index c78d766..66efe7c 100644 --- a/src/llthread.c +++ b/src/llthread.c | |||
@@ -98,11 +98,17 @@ typedef pthread_t os_thread_t; | |||
98 | 98 | ||
99 | #define LLTHREAD_OPEN_NAME LLTHREAD_OPEN_NAME_IMPL(LLTHREAD_MODULE_NAME) | 99 | #define LLTHREAD_OPEN_NAME LLTHREAD_OPEN_NAME_IMPL(LLTHREAD_MODULE_NAME) |
100 | 100 | ||
101 | #define LLTHREAD_STRINGIFY(x) #x | ||
102 | #define LLTHREAD_TOSTRING(x) LLTHREAD_STRINGIFY(x) | ||
103 | #define LLTHREAD_MODULE_NAME_STRING LLTHREAD_TOSTRING(LLTHREAD_MODULE_NAME) | ||
104 | |||
105 | |||
101 | LLTHREADS_EXPORT_API int LLTHREAD_OPEN_NAME(lua_State *L); | 106 | LLTHREADS_EXPORT_API int LLTHREAD_OPEN_NAME(lua_State *L); |
102 | 107 | ||
103 | #define LLTHREAD_NAME "LLThread" | 108 | #define LLTHREAD_NAME "LLThread" |
104 | static const char *LLTHREAD_TAG = LLTHREAD_NAME; | 109 | static const char *LLTHREAD_TAG = LLTHREAD_NAME; |
105 | static const char *LLTHREAD_LOGGER_HOLDER = LLTHREAD_NAME " logger holder"; | 110 | static const char *LLTHREAD_LOGGER_HOLDER = LLTHREAD_NAME " logger holder"; |
111 | static const char* LLTHREAD_INTERRUPTED_ERROR = LLTHREAD_MODULE_NAME_STRING ": thread was interrupted"; | ||
106 | 112 | ||
107 | typedef struct llthread_child_t { | 113 | typedef struct llthread_child_t { |
108 | lua_State *L; | 114 | lua_State *L; |
@@ -697,11 +703,11 @@ static int l_llthread_new(lua_State *L) { | |||
697 | static void llthread_interrupt1(lua_State *L, lua_Debug *ar) { | 703 | static void llthread_interrupt1(lua_State *L, lua_Debug *ar) { |
698 | (void)ar; /* unused arg. */ | 704 | (void)ar; /* unused arg. */ |
699 | lua_sethook(L, NULL, 0, 0); /* reset hook */ | 705 | lua_sethook(L, NULL, 0, 0); /* reset hook */ |
700 | luaL_error(L, "interrupted!"); | 706 | luaL_error(L, LLTHREAD_INTERRUPTED_ERROR); |
701 | } | 707 | } |
702 | static void llthread_interrupt2(lua_State *L, lua_Debug *ar) { | 708 | static void llthread_interrupt2(lua_State *L, lua_Debug *ar) { |
703 | (void)ar; /* unused arg. */ | 709 | (void)ar; /* unused arg. */ |
704 | luaL_error(L, "interrupted!"); | 710 | luaL_error(L, LLTHREAD_INTERRUPTED_ERROR); |
705 | } | 711 | } |
706 | 712 | ||
707 | static int l_llthread_interrupt(lua_State *L) { | 713 | static int l_llthread_interrupt(lua_State *L) { |
@@ -796,5 +802,9 @@ LLTHREADS_EXPORT_API int LLTHREAD_OPEN_NAME(lua_State *L) { | |||
796 | l_llthread_push_version(L); | 802 | l_llthread_push_version(L); |
797 | lua_rawset(L, -3); | 803 | lua_rawset(L, -3); |
798 | 804 | ||
805 | lua_pushliteral(L, "interrupted_error"); | ||
806 | lua_pushstring(L, LLTHREAD_INTERRUPTED_ERROR); | ||
807 | lua_rawset(L, -3); | ||
808 | |||
799 | return 1; | 809 | return 1; |
800 | } | 810 | } |
diff --git a/test/test_interrupt.lua b/test/test_interrupt.lua index 6a7a255..22c168e 100644 --- a/test/test_interrupt.lua +++ b/test/test_interrupt.lua | |||
@@ -18,7 +18,7 @@ do | |||
18 | 18 | ||
19 | local ok, err = thread:join() | 19 | local ok, err = thread:join() |
20 | print("thread1:join(): ", ok, err) | 20 | print("thread1:join(): ", ok, err) |
21 | assert(ok == false and err:match("interrupted!"), "thread1 result") | 21 | assert(ok == false and err:match(llthreads.interrupted_error), "thread1 result") |
22 | print("--- Done interrupt1!") | 22 | print("--- Done interrupt1!") |
23 | end | 23 | end |
24 | 24 | ||
@@ -27,7 +27,7 @@ do | |||
27 | local thread = llthreads.new(include .. [[ | 27 | local thread = llthreads.new(include .. [[ |
28 | local ok, err = pcall(function() for i = 1, 10 do sleep(1) end end) | 28 | local ok, err = pcall(function() for i = 1, 10 do sleep(1) end end) |
29 | print("thread2:", ok, err) | 29 | print("thread2:", ok, err) |
30 | assert(ok == false and err:match("interrupted!"), "interrupt2 result") | 30 | assert(ok == false and err:match(llthreads.interrupted_error), "interrupt2 result") |
31 | ]]) | 31 | ]]) |
32 | 32 | ||
33 | thread:start() | 33 | thread:start() |
@@ -52,7 +52,7 @@ do | |||
52 | 52 | ||
53 | local ok, err = thread:join() | 53 | local ok, err = thread:join() |
54 | print("thread3:join(): ", ok, err) | 54 | print("thread3:join(): ", ok, err) |
55 | assert(ok == false and err:match("interrupted!"), "thread3 result") | 55 | assert(ok == false and err:match(llthreads.interrupted_error), "thread3 result") |
56 | print("--- Done interrupt3!") | 56 | print("--- Done interrupt3!") |
57 | end | 57 | end |
58 | 58 | ||