MCPcopy Create free account
hub / github.com/apache/trafficserver / ts_lua_create_vconn_ctx

Function ts_lua_create_vconn_ctx

plugins/lua/ts_lua_util.cc:696–743  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

694}
695
696ts_lua_vconn_ctx *
697ts_lua_create_vconn_ctx(ts_lua_main_ctx *main_ctx, ts_lua_instance_conf *conf)
698{
699 ts_lua_vconn_ctx *vconn_ctx;
700
701 vconn_ctx = TSRalloc<ts_lua_vconn_ctx>();
702 memset(vconn_ctx, 0, sizeof(*vconn_ctx));
703
704 lua_State *L = main_ctx->lua;
705 lua_State *l = lua_newthread(L);
706
707 lua_pushlightuserdata(L, conf);
708 lua_rawget(L, LUA_REGISTRYINDEX);
709
710 /* new globals table for coroutine */
711 lua_newtable(l);
712 lua_pushvalue(l, -1);
713 lua_setfield(l, -2, "_G");
714 lua_newtable(l);
715 lua_xmove(L, l, 1);
716 lua_setfield(l, -2, "__index");
717 lua_setmetatable(l, -2);
718
719 lua_replace(l, LUA_GLOBALSINDEX);
720
721 // init coroutine
722 vconn_ctx->ref = luaL_ref(L, LUA_REGISTRYINDEX);
723
724 vconn_ctx->lua = l;
725 vconn_ctx->mctx = main_ctx;
726
727 // update thread stats
728 ts_lua_ctx_stats *const stats = main_ctx->stats;
729
730 TSMutexLock(stats->mutexp);
731 ++stats->threads;
732 if (stats->threads_max < stats->threads) {
733 stats->threads_max = stats->threads;
734 }
735 TSMutexUnlock(stats->mutexp);
736
737 vconn_ctx->instance_conf = conf;
738
739 ts_lua_set_vconn_ctx(l, vconn_ctx);
740 ts_lua_create_context_table(l);
741
742 return vconn_ctx;
743}
744
745void
746ts_lua_destroy_vconn_ctx(ts_lua_vconn_ctx *vconn_ctx)

Callers 2

vconnHookHandlerFunction · 0.85
TSPluginInitFunction · 0.85

Calls 5

memsetFunction · 0.85
TSMutexLockFunction · 0.85
TSMutexUnlockFunction · 0.85
ts_lua_set_vconn_ctxFunction · 0.85

Tested by

no test coverage detected