From b1f46561a0fdec21bd7bf8070f587bdc868e6afa Mon Sep 17 00:00:00 2001 From: Thierry Fournier Date: Thu, 21 Jan 2016 09:46:15 +0100 Subject: [PATCH] MINOR: lua: add "now" time function This function returns the current time in the Lua. --- doc/lua-api/index.rst | 14 ++++++++++++++ src/hlua_fcn.c | 18 +++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/doc/lua-api/index.rst b/doc/lua-api/index.rst index 7a1f44edb..d41451f53 100644 --- a/doc/lua-api/index.rst +++ b/doc/lua-api/index.rst @@ -270,6 +270,20 @@ Core class :param string filename: the filename that reference the map entries. :param string key: the key which will be deleted. +.. js:function:: core.now() + + **context**: body, init, task, action + + This function returns the current time. The time returned is fixed by the + HAProxy core and assures than the hour will be monotnic and that the system + call 'gettimeofday' will not be called too. The time is refreshed between each + Lua execution or resume, so two consecutive call to the function "now" will + probably returns the same result. + + :returns: an array which contains two entries "sec" and "usec". "sec" + contains the current at the epoch format, and "usec" contains the + current microseconds. + .. js:function:: core.msleep(milliseconds) **context**: body, init, task, action diff --git a/src/hlua_fcn.c b/src/hlua_fcn.c index 60780319f..b4df09a52 100644 --- a/src/hlua_fcn.c +++ b/src/hlua_fcn.c @@ -7,6 +7,21 @@ #include #include +#include + +/* This function return the current date at epoch format in milliseconds. */ +int hlua_now(lua_State *L) +{ + lua_newtable(L); + lua_pushstring(L, "sec"); + lua_pushinteger(L, now.tv_sec); + lua_rawset(L, -3); + lua_pushstring(L, "usec"); + lua_pushinteger(L, now.tv_usec); + lua_rawset(L, -3); + return 1; +} + static void hlua_array_add_fcn(lua_State *L, const char *name, int (*function)(lua_State *L)) { @@ -17,5 +32,6 @@ static void hlua_array_add_fcn(lua_State *L, const char *name, int hlua_fcn_reg_core_fcn(lua_State *L) { - return 0; + hlua_array_add_fcn(L, "now", hlua_now); + return 1; }