timeout: pragma visibility

master
E. Westbrook 2019-02-27 21:01:16 -07:00
parent 86e1b3f45f
commit 42a1a732b7
2 changed files with 30 additions and 19 deletions

View File

@ -4,10 +4,6 @@
\*=========================================================================*/ \*=========================================================================*/
#include "luasocket.h" #include "luasocket.h"
#include "lua.h"
#include "lauxlib.h"
#include "compat.h"
#include "auxiliar.h" #include "auxiliar.h"
#include "timeout.h" #include "timeout.h"
@ -30,6 +26,10 @@
#define MAX(x, y) ((x) > (y) ? x : y) #define MAX(x, y) ((x) > (y) ? x : y)
#endif #endif
#ifndef _WIN32
#pragma GCC visibility push(hidden)
#endif
/*=========================================================================*\ /*=========================================================================*\
* Internal function prototypes * Internal function prototypes
\*=========================================================================*/ \*=========================================================================*/
@ -48,7 +48,7 @@ static luaL_Reg func[] = {
/*-------------------------------------------------------------------------*\ /*-------------------------------------------------------------------------*\
* Initialize structure * Initialize structure
\*-------------------------------------------------------------------------*/ \*-------------------------------------------------------------------------*/
LUASOCKET_PRIVATE void timeout_init(p_timeout tm, double block, double total) { void timeout_init(p_timeout tm, double block, double total) {
tm->block = block; tm->block = block;
tm->total = total; tm->total = total;
} }
@ -61,7 +61,7 @@ LUASOCKET_PRIVATE void timeout_init(p_timeout tm, double block, double total) {
* Returns * Returns
* the number of ms left or -1 if there is no time limit * the number of ms left or -1 if there is no time limit
\*-------------------------------------------------------------------------*/ \*-------------------------------------------------------------------------*/
LUASOCKET_PRIVATE double timeout_get(p_timeout tm) { double timeout_get(p_timeout tm) {
if (tm->block < 0.0 && tm->total < 0.0) { if (tm->block < 0.0 && tm->total < 0.0) {
return -1; return -1;
} else if (tm->block < 0.0) { } else if (tm->block < 0.0) {
@ -82,7 +82,7 @@ LUASOCKET_PRIVATE double timeout_get(p_timeout tm) {
* Returns * Returns
* start field of structure * start field of structure
\*-------------------------------------------------------------------------*/ \*-------------------------------------------------------------------------*/
LUASOCKET_PRIVATE double timeout_getstart(p_timeout tm) { double timeout_getstart(p_timeout tm) {
return tm->start; return tm->start;
} }
@ -94,7 +94,7 @@ LUASOCKET_PRIVATE double timeout_getstart(p_timeout tm) {
* Returns * Returns
* the number of ms left or -1 if there is no time limit * the number of ms left or -1 if there is no time limit
\*-------------------------------------------------------------------------*/ \*-------------------------------------------------------------------------*/
LUASOCKET_PRIVATE double timeout_getretry(p_timeout tm) { double timeout_getretry(p_timeout tm) {
if (tm->block < 0.0 && tm->total < 0.0) { if (tm->block < 0.0 && tm->total < 0.0) {
return -1; return -1;
} else if (tm->block < 0.0) { } else if (tm->block < 0.0) {
@ -114,7 +114,7 @@ LUASOCKET_PRIVATE double timeout_getretry(p_timeout tm) {
* Input * Input
* tm: timeout control structure * tm: timeout control structure
\*-------------------------------------------------------------------------*/ \*-------------------------------------------------------------------------*/
LUASOCKET_PRIVATE p_timeout timeout_markstart(p_timeout tm) { p_timeout timeout_markstart(p_timeout tm) {
tm->start = timeout_gettime(); tm->start = timeout_gettime();
return tm; return tm;
} }
@ -125,7 +125,7 @@ LUASOCKET_PRIVATE p_timeout timeout_markstart(p_timeout tm) {
* time in s. * time in s.
\*-------------------------------------------------------------------------*/ \*-------------------------------------------------------------------------*/
#ifdef _WIN32 #ifdef _WIN32
LUASOCKET_PRIVATE double timeout_gettime(void) { double timeout_gettime(void) {
FILETIME ft; FILETIME ft;
double t; double t;
GetSystemTimeAsFileTime(&ft); GetSystemTimeAsFileTime(&ft);
@ -135,7 +135,7 @@ LUASOCKET_PRIVATE double timeout_gettime(void) {
return (t - 11644473600.0); return (t - 11644473600.0);
} }
#else #else
LUASOCKET_PRIVATE double timeout_gettime(void) { double timeout_gettime(void) {
struct timeval v; struct timeval v;
gettimeofday(&v, (struct timezone *) NULL); gettimeofday(&v, (struct timezone *) NULL);
/* Unix Epoch time (time since January 1, 1970 (UTC)) */ /* Unix Epoch time (time since January 1, 1970 (UTC)) */
@ -146,7 +146,7 @@ LUASOCKET_PRIVATE double timeout_gettime(void) {
/*-------------------------------------------------------------------------*\ /*-------------------------------------------------------------------------*\
* Initializes module * Initializes module
\*-------------------------------------------------------------------------*/ \*-------------------------------------------------------------------------*/
LUASOCKET_PRIVATE int timeout_open(lua_State *L) { int timeout_open(lua_State *L) {
luaL_setfuncs(L, func, 0); luaL_setfuncs(L, func, 0);
return 0; return 0;
} }
@ -157,7 +157,7 @@ LUASOCKET_PRIVATE int timeout_open(lua_State *L) {
* time: time out value in seconds * time: time out value in seconds
* mode: "b" for block timeout, "t" for total timeout. (default: b) * mode: "b" for block timeout, "t" for total timeout. (default: b)
\*-------------------------------------------------------------------------*/ \*-------------------------------------------------------------------------*/
LUASOCKET_PRIVATE int timeout_meth_settimeout(lua_State *L, p_timeout tm) { int timeout_meth_settimeout(lua_State *L, p_timeout tm) {
double t = luaL_optnumber(L, 2, -1); double t = luaL_optnumber(L, 2, -1);
const char *mode = luaL_optstring(L, 3, "b"); const char *mode = luaL_optstring(L, 3, "b");
switch (*mode) { switch (*mode) {
@ -179,7 +179,7 @@ LUASOCKET_PRIVATE int timeout_meth_settimeout(lua_State *L, p_timeout tm) {
* Gets timeout values for IO operations * Gets timeout values for IO operations
* Lua Output: block, total * Lua Output: block, total
\*-------------------------------------------------------------------------*/ \*-------------------------------------------------------------------------*/
LUASOCKET_PRIVATE int timeout_meth_gettimeout(lua_State *L, p_timeout tm) { int timeout_meth_gettimeout(lua_State *L, p_timeout tm) {
lua_pushnumber(L, tm->block); lua_pushnumber(L, tm->block);
lua_pushnumber(L, tm->total); lua_pushnumber(L, tm->total);
return 2; return 2;
@ -201,7 +201,7 @@ static int timeout_lua_gettime(lua_State *L)
* Sleep for n seconds. * Sleep for n seconds.
\*-------------------------------------------------------------------------*/ \*-------------------------------------------------------------------------*/
#ifdef _WIN32 #ifdef _WIN32
LUASOCKET_PRIVATE int timeout_lua_sleep(lua_State *L) int timeout_lua_sleep(lua_State *L)
{ {
double n = luaL_checknumber(L, 1); double n = luaL_checknumber(L, 1);
if (n < 0.0) n = 0.0; if (n < 0.0) n = 0.0;
@ -211,7 +211,7 @@ LUASOCKET_PRIVATE int timeout_lua_sleep(lua_State *L)
return 0; return 0;
} }
#else #else
LUASOCKET_PRIVATE int timeout_lua_sleep(lua_State *L) int timeout_lua_sleep(lua_State *L)
{ {
double n = luaL_checknumber(L, 1); double n = luaL_checknumber(L, 1);
struct timespec t, r; struct timespec t, r;
@ -228,3 +228,7 @@ LUASOCKET_PRIVATE int timeout_lua_sleep(lua_State *L)
return 0; return 0;
} }
#endif #endif
#ifndef _WIN32
#pragma GCC visibility pop
#endif

View File

@ -4,7 +4,7 @@
* Timeout management functions * Timeout management functions
* LuaSocket toolkit * LuaSocket toolkit
\*=========================================================================*/ \*=========================================================================*/
#include "lua.h" #include "luasocket.h"
/* timeout control structure */ /* timeout control structure */
typedef struct t_timeout_ { typedef struct t_timeout_ {
@ -14,16 +14,23 @@ typedef struct t_timeout_ {
} t_timeout; } t_timeout;
typedef t_timeout *p_timeout; typedef t_timeout *p_timeout;
int timeout_open(lua_State *L); #pragma GCC visibility push(hidden)
void timeout_init(p_timeout tm, double block, double total); void timeout_init(p_timeout tm, double block, double total);
double timeout_get(p_timeout tm); double timeout_get(p_timeout tm);
double timeout_getstart(p_timeout tm);
double timeout_getretry(p_timeout tm); double timeout_getretry(p_timeout tm);
p_timeout timeout_markstart(p_timeout tm); p_timeout timeout_markstart(p_timeout tm);
double timeout_getstart(p_timeout tm);
double timeout_gettime(void); double timeout_gettime(void);
int timeout_open(lua_State *L);
int timeout_meth_settimeout(lua_State *L, p_timeout tm); int timeout_meth_settimeout(lua_State *L, p_timeout tm);
int timeout_meth_gettimeout(lua_State *L, p_timeout tm); int timeout_meth_gettimeout(lua_State *L, p_timeout tm);
#pragma GCC visibility pop
#define timeout_iszero(tm) ((tm)->block == 0.0) #define timeout_iszero(tm) ((tm)->block == 0.0)
#endif /* TIMEOUT_H */ #endif /* TIMEOUT_H */