MINOR: lua: add "now" time function
This function returns the current time in the Lua.
diff --git a/doc/lua-api/index.rst b/doc/lua-api/index.rst
index 7a1f44e..d41451f 100644
--- a/doc/lua-api/index.rst
+++ b/doc/lua-api/index.rst
@@ -270,6 +270,20 @@
: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 6078031..b4df09a 100644
--- a/src/hlua_fcn.c
+++ b/src/hlua_fcn.c
@@ -7,6 +7,21 @@
#include <lua.h>
#include <lualib.h>
+#include <common/time.h>
+
+/* 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 @@
int hlua_fcn_reg_core_fcn(lua_State *L)
{
- return 0;
+ hlua_array_add_fcn(L, "now", hlua_now);
+ return 1;
}