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

Function handle_transform

plugins/experimental/inliner/ats-inliner.cc:58–101  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

56};
57
58void
59handle_transform(const TSCont c)
60{
61 const TSVIO vio = TSVConnWriteVIOGet(c);
62
63 MyData *const data = static_cast<MyData *>(TSContDataGet(c));
64
65 if (!TSVIOBufferGet(vio)) {
66 TSVConnShutdown(c, 1, 0);
67 TSContDataSet(c, nullptr);
68 delete data;
69 return;
70 }
71
72 auto todo = TSVIONTodoGet(vio);
73
74 if (todo > 0) {
75 const TSIOBufferReader reader = TSVIOReaderGet(vio);
76 todo = std::min(todo, TSIOBufferReaderAvail(reader));
77
78 if (todo > 0) {
79 if (!data) {
80 const_cast<MyData *&>(data) = new MyData(TSVIOReaderGet(vio), c);
81 TSContDataSet(c, data);
82 }
83
84 data->handler.parse();
85
86 TSIOBufferReaderConsume(reader, todo);
87 TSVIONDoneSet(vio, TSVIONDoneGet(vio) + todo);
88 }
89 }
90
91 if (TSVIONTodoGet(vio) > 0) {
92 if (todo > 0) {
93 TSContCall(TSVIOContGet(vio), TS_EVENT_VCONN_WRITE_READY, vio);
94 }
95 } else {
96 TSContCall(TSVIOContGet(vio), TS_EVENT_VCONN_WRITE_COMPLETE, vio);
97 TSVConnShutdown(c, 1, 0);
98 TSContDataSet(c, nullptr);
99 delete data;
100 }
101}
102
103int
104inliner_transform(TSCont c, TSEvent e, void *)

Callers 1

inliner_transformFunction · 0.70

Calls 14

TSVConnWriteVIOGetFunction · 0.85
TSContDataGetFunction · 0.85
TSVIOBufferGetFunction · 0.85
TSVConnShutdownFunction · 0.85
TSContDataSetFunction · 0.85
TSVIONTodoGetFunction · 0.85
TSVIOReaderGetFunction · 0.85
TSIOBufferReaderAvailFunction · 0.85
TSVIONDoneSetFunction · 0.85
TSVIONDoneGetFunction · 0.85
TSContCallFunction · 0.85
TSVIOContGetFunction · 0.85

Tested by

no test coverage detected