:param class_AppletHTTP applet: An :ref:`applethttp_class`
:param string msg: the message to send.
+.. js:function:: AppletHTTP.get_priv(applet)
+
+ Return Lua data stored in the current transaction (with the
+ `AppletHTTP.set_priv()`) function. If no data are stored, it returns a nil
+ value.
+
+ :param class_AppletHTTP applet: An :ref:`applethttp_class`
+ :returns: the opaque data previsously stored, or nil if nothing is
+ avalaible.
+
+.. js:function:: AppletHTTP.set_priv(applet, data)
+
+ Store any data in the current HAProxy transaction. This action replace the
+ old stored data.
+
+ :param class_AppletHTTP applet: An :ref:`applethttp_class`
+ :param opaque data: The data which is stored in the transaction.
+
.. _applettcp_class:
AppletTCP class
:param class_AppletTCP applet: An :ref:`applettcp_class`
:param string msg: the message to send.
+.. js:function:: AppletTCP.get_priv(applet)
+
+ Return Lua data stored in the current transaction (with the
+ `AppletTCP.set_priv()`) function. If no data are stored, it returns a nil
+ value.
+
+ :param class_AppletTCP applet: An :ref:`applettcp_class`
+ :returns: the opaque data previsously stored, or nil if nothing is
+ avalaible.
+
+.. js:function:: AppletTCP.set_priv(applet, data)
+
+ Store any data in the current HAProxy transaction. This action replace the
+ old stored data.
+
+ :param class_AppletTCP applet: An :ref:`applettcp_class`
+ :param opaque data: The data which is stored in the transaction.
+
External Lua libraries
======================
return 1;
}
+__LJMP static int hlua_applet_tcp_set_priv(lua_State *L)
+{
+ struct hlua_appctx *appctx = MAY_LJMP(hlua_checkapplet_tcp(L, 1));
+ struct stream *s = appctx->htxn.s;
+ struct hlua *hlua = &s->hlua;
+
+ MAY_LJMP(check_args(L, 2, "set_priv"));
+
+ /* Remove previous value. */
+ if (hlua->Mref != -1)
+ luaL_unref(L, hlua->Mref, LUA_REGISTRYINDEX);
+
+ /* Get and store new value. */
+ lua_pushvalue(L, 2); /* Copy the element 2 at the top of the stack. */
+ hlua->Mref = luaL_ref(L, LUA_REGISTRYINDEX); /* pop the previously pushed value. */
+
+ return 0;
+}
+
+__LJMP static int hlua_applet_tcp_get_priv(lua_State *L)
+{
+ struct hlua_appctx *appctx = MAY_LJMP(hlua_checkapplet_tcp(L, 1));
+ struct stream *s = appctx->htxn.s;
+ struct hlua *hlua = &s->hlua;
+
+ /* Push configuration index in the stack. */
+ lua_rawgeti(L, LUA_REGISTRYINDEX, hlua->Mref);
+
+ return 1;
+}
+
/* If expected data not yet available, it returns a yield. This function
* consumes the data in the buffer. It returns a string containing the
* data. This string can be empty.
return 1;
}
+__LJMP static int hlua_applet_http_set_priv(lua_State *L)
+{
+ struct hlua_appctx *appctx = MAY_LJMP(hlua_checkapplet_http(L, 1));
+ struct stream *s = appctx->htxn.s;
+ struct hlua *hlua = &s->hlua;
+
+ MAY_LJMP(check_args(L, 2, "set_priv"));
+
+ /* Remove previous value. */
+ if (hlua->Mref != -1)
+ luaL_unref(L, hlua->Mref, LUA_REGISTRYINDEX);
+
+ /* Get and store new value. */
+ lua_pushvalue(L, 2); /* Copy the element 2 at the top of the stack. */
+ hlua->Mref = luaL_ref(L, LUA_REGISTRYINDEX); /* pop the previously pushed value. */
+
+ return 0;
+}
+
+__LJMP static int hlua_applet_http_get_priv(lua_State *L)
+{
+ struct hlua_appctx *appctx = MAY_LJMP(hlua_checkapplet_http(L, 1));
+ struct stream *s = appctx->htxn.s;
+ struct hlua *hlua = &s->hlua;
+
+ /* Push configuration index in the stack. */
+ lua_rawgeti(L, LUA_REGISTRYINDEX, hlua->Mref);
+
+ return 1;
+}
+
/* If expected data not yet available, it returns a yield. This function
* consumes the data in the buffer. It returns a string containing the
* data. This string can be empty.
lua_newtable(gL.T);
/* Register Lua functions. */
- hlua_class_function(gL.T, "getline", hlua_applet_tcp_getline);
- hlua_class_function(gL.T, "receive", hlua_applet_tcp_recv);
- hlua_class_function(gL.T, "send", hlua_applet_tcp_send);
+ hlua_class_function(gL.T, "getline", hlua_applet_tcp_getline);
+ hlua_class_function(gL.T, "receive", hlua_applet_tcp_recv);
+ hlua_class_function(gL.T, "send", hlua_applet_tcp_send);
+ hlua_class_function(gL.T, "set_priv", hlua_applet_tcp_set_priv);
+ hlua_class_function(gL.T, "get_priv", hlua_applet_tcp_get_priv);
lua_settable(gL.T, -3);
lua_newtable(gL.T);
/* Register Lua functions. */
+ hlua_class_function(gL.T, "set_priv", hlua_applet_http_set_priv);
+ hlua_class_function(gL.T, "get_priv", hlua_applet_http_get_priv);
hlua_class_function(gL.T, "getline", hlua_applet_http_getline);
hlua_class_function(gL.T, "receive", hlua_applet_http_recv);
hlua_class_function(gL.T, "send", hlua_applet_http_send);