aboutsummaryrefslogtreecommitdiff
path: root/src/timeout.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/timeout.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/src/timeout.c b/src/timeout.c
index 8fb8f55..2bdc069 100644
--- a/src/timeout.c
+++ b/src/timeout.c
@@ -4,10 +4,6 @@
4\*=========================================================================*/ 4\*=========================================================================*/
5#include "luasocket.h" 5#include "luasocket.h"
6 6
7#include "lua.h"
8#include "lauxlib.h"
9#include "compat.h"
10
11#include "auxiliar.h" 7#include "auxiliar.h"
12#include "timeout.h" 8#include "timeout.h"
13 9
@@ -48,7 +44,7 @@ static luaL_Reg func[] = {
48/*-------------------------------------------------------------------------*\ 44/*-------------------------------------------------------------------------*\
49* Initialize structure 45* Initialize structure
50\*-------------------------------------------------------------------------*/ 46\*-------------------------------------------------------------------------*/
51LUASOCKET_PRIVATE void timeout_init(p_timeout tm, double block, double total) { 47void timeout_init(p_timeout tm, double block, double total) {
52 tm->block = block; 48 tm->block = block;
53 tm->total = total; 49 tm->total = total;
54} 50}
@@ -61,7 +57,7 @@ LUASOCKET_PRIVATE void timeout_init(p_timeout tm, double block, double total) {
61* Returns 57* Returns
62* the number of ms left or -1 if there is no time limit 58* the number of ms left or -1 if there is no time limit
63\*-------------------------------------------------------------------------*/ 59\*-------------------------------------------------------------------------*/
64LUASOCKET_PRIVATE double timeout_get(p_timeout tm) { 60double timeout_get(p_timeout tm) {
65 if (tm->block < 0.0 && tm->total < 0.0) { 61 if (tm->block < 0.0 && tm->total < 0.0) {
66 return -1; 62 return -1;
67 } else if (tm->block < 0.0) { 63 } else if (tm->block < 0.0) {
@@ -82,7 +78,7 @@ LUASOCKET_PRIVATE double timeout_get(p_timeout tm) {
82* Returns 78* Returns
83* start field of structure 79* start field of structure
84\*-------------------------------------------------------------------------*/ 80\*-------------------------------------------------------------------------*/
85LUASOCKET_PRIVATE double timeout_getstart(p_timeout tm) { 81double timeout_getstart(p_timeout tm) {
86 return tm->start; 82 return tm->start;
87} 83}
88 84
@@ -94,7 +90,7 @@ LUASOCKET_PRIVATE double timeout_getstart(p_timeout tm) {
94* Returns 90* Returns
95* the number of ms left or -1 if there is no time limit 91* the number of ms left or -1 if there is no time limit
96\*-------------------------------------------------------------------------*/ 92\*-------------------------------------------------------------------------*/
97LUASOCKET_PRIVATE double timeout_getretry(p_timeout tm) { 93double timeout_getretry(p_timeout tm) {
98 if (tm->block < 0.0 && tm->total < 0.0) { 94 if (tm->block < 0.0 && tm->total < 0.0) {
99 return -1; 95 return -1;
100 } else if (tm->block < 0.0) { 96 } else if (tm->block < 0.0) {
@@ -114,7 +110,7 @@ LUASOCKET_PRIVATE double timeout_getretry(p_timeout tm) {
114* Input 110* Input
115* tm: timeout control structure 111* tm: timeout control structure
116\*-------------------------------------------------------------------------*/ 112\*-------------------------------------------------------------------------*/
117LUASOCKET_PRIVATE p_timeout timeout_markstart(p_timeout tm) { 113p_timeout timeout_markstart(p_timeout tm) {
118 tm->start = timeout_gettime(); 114 tm->start = timeout_gettime();
119 return tm; 115 return tm;
120} 116}
@@ -125,7 +121,7 @@ LUASOCKET_PRIVATE p_timeout timeout_markstart(p_timeout tm) {
125* time in s. 121* time in s.
126\*-------------------------------------------------------------------------*/ 122\*-------------------------------------------------------------------------*/
127#ifdef _WIN32 123#ifdef _WIN32
128LUASOCKET_PRIVATE double timeout_gettime(void) { 124double timeout_gettime(void) {
129 FILETIME ft; 125 FILETIME ft;
130 double t; 126 double t;
131 GetSystemTimeAsFileTime(&ft); 127 GetSystemTimeAsFileTime(&ft);
@@ -135,7 +131,7 @@ LUASOCKET_PRIVATE double timeout_gettime(void) {
135 return (t - 11644473600.0); 131 return (t - 11644473600.0);
136} 132}
137#else 133#else
138LUASOCKET_PRIVATE double timeout_gettime(void) { 134double timeout_gettime(void) {
139 struct timeval v; 135 struct timeval v;
140 gettimeofday(&v, (struct timezone *) NULL); 136 gettimeofday(&v, (struct timezone *) NULL);
141 /* Unix Epoch time (time since January 1, 1970 (UTC)) */ 137 /* Unix Epoch time (time since January 1, 1970 (UTC)) */
@@ -146,7 +142,7 @@ LUASOCKET_PRIVATE double timeout_gettime(void) {
146/*-------------------------------------------------------------------------*\ 142/*-------------------------------------------------------------------------*\
147* Initializes module 143* Initializes module
148\*-------------------------------------------------------------------------*/ 144\*-------------------------------------------------------------------------*/
149LUASOCKET_PRIVATE int timeout_open(lua_State *L) { 145int timeout_open(lua_State *L) {
150 luaL_setfuncs(L, func, 0); 146 luaL_setfuncs(L, func, 0);
151 return 0; 147 return 0;
152} 148}
@@ -157,7 +153,7 @@ LUASOCKET_PRIVATE int timeout_open(lua_State *L) {
157* time: time out value in seconds 153* time: time out value in seconds
158* mode: "b" for block timeout, "t" for total timeout. (default: b) 154* mode: "b" for block timeout, "t" for total timeout. (default: b)
159\*-------------------------------------------------------------------------*/ 155\*-------------------------------------------------------------------------*/
160LUASOCKET_PRIVATE int timeout_meth_settimeout(lua_State *L, p_timeout tm) { 156int timeout_meth_settimeout(lua_State *L, p_timeout tm) {
161 double t = luaL_optnumber(L, 2, -1); 157 double t = luaL_optnumber(L, 2, -1);
162 const char *mode = luaL_optstring(L, 3, "b"); 158 const char *mode = luaL_optstring(L, 3, "b");
163 switch (*mode) { 159 switch (*mode) {
@@ -179,7 +175,7 @@ LUASOCKET_PRIVATE int timeout_meth_settimeout(lua_State *L, p_timeout tm) {
179* Gets timeout values for IO operations 175* Gets timeout values for IO operations
180* Lua Output: block, total 176* Lua Output: block, total
181\*-------------------------------------------------------------------------*/ 177\*-------------------------------------------------------------------------*/
182LUASOCKET_PRIVATE int timeout_meth_gettimeout(lua_State *L, p_timeout tm) { 178int timeout_meth_gettimeout(lua_State *L, p_timeout tm) {
183 lua_pushnumber(L, tm->block); 179 lua_pushnumber(L, tm->block);
184 lua_pushnumber(L, tm->total); 180 lua_pushnumber(L, tm->total);
185 return 2; 181 return 2;
@@ -201,7 +197,7 @@ static int timeout_lua_gettime(lua_State *L)
201* Sleep for n seconds. 197* Sleep for n seconds.
202\*-------------------------------------------------------------------------*/ 198\*-------------------------------------------------------------------------*/
203#ifdef _WIN32 199#ifdef _WIN32
204LUASOCKET_PRIVATE int timeout_lua_sleep(lua_State *L) 200int timeout_lua_sleep(lua_State *L)
205{ 201{
206 double n = luaL_checknumber(L, 1); 202 double n = luaL_checknumber(L, 1);
207 if (n < 0.0) n = 0.0; 203 if (n < 0.0) n = 0.0;
@@ -211,7 +207,7 @@ LUASOCKET_PRIVATE int timeout_lua_sleep(lua_State *L)
211 return 0; 207 return 0;
212} 208}
213#else 209#else
214LUASOCKET_PRIVATE int timeout_lua_sleep(lua_State *L) 210int timeout_lua_sleep(lua_State *L)
215{ 211{
216 double n = luaL_checknumber(L, 1); 212 double n = luaL_checknumber(L, 1);
217 struct timespec t, r; 213 struct timespec t, r;