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

Function ts_lua_fetch_handler

plugins/lua/ts_lua_fetch.cc:398–445  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

396}
397
398static int
399ts_lua_fetch_handler(TSCont contp, TSEvent ev, void *edata ATS_UNUSED)
400{
401 int event;
402 char *from;
403 int64_t n, wavail;
404 TSIOBufferBlock blk;
405
406 ts_lua_fetch_info *fi;
407 ts_lua_fetch_multi_info *fmi;
408
409 event = (int)ev;
410 fi = static_cast<decltype(fi)>(TSContDataGet(contp));
411 fmi = fi->fmi;
412
413 switch (event) {
414 case TS_FETCH_EVENT_EXT_HEAD_READY:
415 case TS_FETCH_EVENT_EXT_HEAD_DONE:
416 break;
417
418 case TS_FETCH_EVENT_EXT_BODY_READY:
419 case TS_FETCH_EVENT_EXT_BODY_DONE:
420
421 do {
422 blk = TSIOBufferStart(fi->buffer);
423 from = TSIOBufferBlockWriteStart(blk, &wavail);
424 n = TSFetchReadData(fi->fch, from, wavail);
425 TSIOBufferProduce(fi->buffer, n);
426 } while (n == wavail);
427
428 if (event == TS_FETCH_EVENT_EXT_BODY_DONE) { // fetch over
429 fi->over = 1;
430 }
431
432 break;
433
434 default:
435 fi->failed = 1;
436 break;
437 }
438
439 if (fmi && (fi->over || fi->failed)) {
440 TSContCall(fmi->contp, TSEvent(TS_LUA_EVENT_FETCH_OVER), fi); // error exist
441 ts_lua_destroy_fetch_multi_info(fmi);
442 }
443
444 return 0;
445}
446
447static int
448ts_lua_fill_one_result(lua_State *L, ts_lua_fetch_info *fi)

Callers

nothing calls this directly

Calls 7

TSContDataGetFunction · 0.85
TSIOBufferStartFunction · 0.85
TSFetchReadDataFunction · 0.85
TSIOBufferProduceFunction · 0.85
TSContCallFunction · 0.85

Tested by

no test coverage detected