1
0
mirror of https://github.com/lammertb/libhttp.git synced 2025-12-22 04:02:04 +03:00

Rewrite websocket for Lua (Step 13 of ?)

This commit is contained in:
bel
2014-06-01 00:16:47 +02:00
parent 9ec115fff2
commit 2a2efc26f7
3 changed files with 17 additions and 7 deletions

View File

@@ -88,7 +88,7 @@
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<PreprocessorDefinitions>LUA_COMPAT_ALL;USE_LUA;USE_LUA_SQLITE3;USE_LUA_FILE_SYSTEM;USE_WEBSOCKET;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>LUA_COMPAT_ALL;USE_LUA;USE_LUA_SQLITE3;USE_LUA_FILE_SYSTEM;USE_WEBSOCKET;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\include;$(ProjectDir)..\..\src\third_party\lua-5.2.2\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;$(ProjectDir)..\..\src\third_party\lua-5.2.2\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile> </ClCompile>
<Link> <Link>

View File

@@ -181,6 +181,10 @@ typedef long off_t;
#define sleep(x) Sleep((x) * 1000) #define sleep(x) Sleep((x) * 1000)
#define rmdir(x) _rmdir(x) #define rmdir(x) _rmdir(x)
#if defined(USE_LUA) && defined(USE_WEBSOCKET)
#define USE_TIMERS
#endif
#if !defined(va_copy) #if !defined(va_copy)
#define va_copy(x, y) x = y #define va_copy(x, y) x = y
#endif /* !va_copy MINGW #defines va_copy */ #endif /* !va_copy MINGW #defines va_copy */
@@ -789,8 +793,12 @@ struct mg_context {
#if defined(USE_LUA) && defined(USE_WEBSOCKET) #if defined(USE_LUA) && defined(USE_WEBSOCKET)
/* linked list of shared lua websockets */ /* linked list of shared lua websockets */
struct mg_shared_lua_websocket_list *shared_lua_websockets; struct mg_shared_lua_websocket_list *shared_lua_websockets;
#endif
#ifdef USE_TIMERS
pthread_t timerthreadid; /* Time thread ID */ pthread_t timerthreadid; /* Time thread ID */
pthread_mutex_t timer_mutex; /* Protects timer lists */ pthread_mutex_t timer_mutex; /* Protects timer lists */
struct timer_list *timers; /* List of timers */
#endif #endif
}; };
@@ -6739,7 +6747,7 @@ static void *master_thread(void *thread_func_param)
} }
#endif /* _WIN32 */ #endif /* _WIN32 */
#if defined(USE_LUA) && defined(USE_WEBSOCKET) #if defined(USE_TIMERS)
void timer_thread_run(void *thread_func_param) void timer_thread_run(void *thread_func_param)
{ {
struct mg_context *ctx = (struct mg_context *) thread_func_param; struct mg_context *ctx = (struct mg_context *) thread_func_param;
@@ -6764,7 +6772,7 @@ static void *timer_thread(void *thread_func_param)
return NULL; return NULL;
} }
#endif /* _WIN32 */ #endif /* _WIN32 */
#endif /* USE_LUA && USE_WEBSOCKET */ #endif /* USE_TIMERS */
static void free_context(struct mg_context *ctx) static void free_context(struct mg_context *ctx)
{ {
@@ -6783,7 +6791,7 @@ static void free_context(struct mg_context *ctx)
/* Destroy other context global data structures mutex */ /* Destroy other context global data structures mutex */
(void) pthread_mutex_destroy(&ctx->nonce_mutex); (void) pthread_mutex_destroy(&ctx->nonce_mutex);
#if defined(USE_LUA) && defined(USE_WEBSOCKET) #if defined(USE_TIMERS)
(void) pthread_mutex_destroy(&ctx->timer_mutex); (void) pthread_mutex_destroy(&ctx->timer_mutex);
#endif #endif
@@ -6979,7 +6987,7 @@ struct mg_context *mg_start(const struct mg_callbacks *callbacks,
(void) pthread_mutex_init(&ctx->nonce_mutex, NULL); (void) pthread_mutex_init(&ctx->nonce_mutex, NULL);
#if defined(USE_LUA) && defined(USE_WEBSOCKET) #if defined(USE_TIMERS)
(void) pthread_mutex_init(&ctx->timer_mutex, NULL); (void) pthread_mutex_init(&ctx->timer_mutex, NULL);
#endif #endif
@@ -7001,7 +7009,7 @@ struct mg_context *mg_start(const struct mg_callbacks *callbacks,
} }
} }
#if defined(USE_LUA) && defined(USE_WEBSOCKET) #if defined(USE_TIMERS)
/* Start timer thread */ /* Start timer thread */
mg_start_thread_with_id(timer_thread, ctx, &ctx->timerthreadid); mg_start_thread_with_id(timer_thread, ctx, &ctx->timerthreadid);
#endif #endif

View File

@@ -734,7 +734,7 @@ static int lwebsock_write(lua_State *L)
static int lwebsocket_set_timer(lua_State *L, int is_periodic) static int lwebsocket_set_timer(lua_State *L, int is_periodic)
{ {
#ifdef USE_WEBSOCKET #ifdef USE_TIMERS
int num_args = lua_gettop(L); int num_args = lua_gettop(L);
struct lua_websock_data *ws; struct lua_websock_data *ws;
lua_Number timediff; lua_Number timediff;
@@ -909,8 +909,10 @@ static void prepare_lua_environment(struct mg_context * ctx, struct mg_connectio
if (lua_env_type==LUA_ENV_TYPE_LUA_WEBSOCKET) { if (lua_env_type==LUA_ENV_TYPE_LUA_WEBSOCKET) {
reg_function(L, "write", lwebsock_write); reg_function(L, "write", lwebsock_write);
#ifdef USE_TIMERS
reg_function(L, "set_timeout", lwebsocket_set_timeout); reg_function(L, "set_timeout", lwebsocket_set_timeout);
reg_function(L, "set_interval", lwebsocket_set_interval); reg_function(L, "set_interval", lwebsocket_set_interval);
#endif
/* reg_conn_function(L, "send_file", lsp_send_file, conn); */ /* reg_conn_function(L, "send_file", lsp_send_file, conn); */
} }