void LUAPublication::Delete(lua_State* pState, Publication& publication) { if (!publication.running()) return; lua_getmetatable(pState, -1); lua_getfield(pState, -1, "|invoker"); lua_replace(pState, -2); Invoker* pInvoker = (Invoker*)lua_touserdata(pState, -1); if (pInvoker) pInvoker->unpublish(publication.name()); lua_pop(pState, 1); }
int LUAPublication::Close(lua_State *pState) { SCRIPT_CALLBACK(Publication, publication) lua_getmetatable(pState, 1); lua_getfield(pState, -1, "|invoker"); lua_replace(pState, -2); Script::DetachDestructor(pState,1); Invoker* pInvoker = (Invoker*)lua_touserdata(pState, -1); if (!pInvoker) { SCRIPT_BEGIN(pState) SCRIPT_ERROR("You have not the handle on publication ", publication.name(), ", you can't close it") SCRIPT_END } else if (publication.running()) pInvoker->unpublish(publication.name()); // call LUAPublication::Clear (because no destructor) lua_pop(pState, 1); SCRIPT_CALLBACK_RETURN }