File

util-src/compat.c @ 11515:10d13e0554f9

core.statsmanager: Allow special "manual" value for statistics_interval When set, no periodic statistics collection is done by core.statsmanager, instead some module is expected to call collect() when it suits. Obviously only one such module should be enabled. Quoth jonas’ > correct way is to scrape the internal sources on each call to /metrics > in the context of Prometheus "manual" as opposed to "automatic", from the point of view of statsmanager.
author Kim Alvefur <zash@zash.se>
date Tue, 06 Apr 2021 23:25:15 +0200
parent 9561:cfc7b2f7251e
child 12976:a187600ec7d6
line wrap: on
line source


#include <lua.h>
#include <lauxlib.h>


static int lc_xpcall (lua_State *L) {
  int ret;
  int n_arg = lua_gettop(L);
  /* f, msgh, p1, p2... */
  luaL_argcheck(L, n_arg >= 2, 2, "value expected");
  lua_pushvalue(L, 1);  /* f to top */
  lua_pushvalue(L, 2);  /* msgh to top */
  lua_replace(L, 1); /* msgh to 1 */
  lua_replace(L, 2); /* f to 2 */
  /* msgh, f, p1, p2... */
  ret = lua_pcall(L, n_arg - 2, LUA_MULTRET, 1);
  lua_pushboolean(L, ret == 0);
  lua_replace(L, 1);
  return lua_gettop(L);
}

int luaopen_util_compat(lua_State *L) {
	lua_createtable(L, 0, 2);
	{
		lua_pushcfunction(L, lc_xpcall);
		lua_setfield(L, -2, "xpcall");
	}
	return 1;
}