MCPcopy Create free account
hub / github.com/defold/defold / HttpContent

Function HttpContent

engine/script/src/http_service.cpp:109–151  ·  view source on GitHub ↗

Called from the http thread(s)

Source from the content-addressed store, hash-verified

107
108 // Called from the http thread(s)
109 void HttpContent(dmHttpClient::HResponse response, void* user_data, int status_code,
110 const void* content_data, uint32_t content_data_size, int32_t content_length,
111 uint32_t range_start, uint32_t range_end, uint32_t document_size,
112 const char* method)
113 {
114 Worker* worker = (Worker*) user_data;
115 worker->m_Status = status_code;
116 worker->m_RangeStart = range_start;
117 worker->m_RangeEnd = range_end;
118 worker->m_DocumentSize = document_size;
119 dmArray<char>& r = worker->m_Response;
120 bool method_is_head = method && strcmp(method, "HEAD") == 0;
121
122 if (!method_is_head && !content_data && !content_data_size)
123 {
124 r.SetSize(0);
125 return;
126 }
127
128 uint32_t bytes_received = 0;
129 if (!method_is_head)
130 {
131 // do we have enough room to fit the content? if not, grow the array
132 uint32_t left = r.Capacity() - r.Size();
133 if (content_data_size > left)
134 {
135 r.OffsetCapacity(content_data_size - left);
136 }
137 r.PushArray((char*) content_data, content_data_size);
138 bytes_received = r.Size();
139 }
140
141 if (worker->m_ReportProgress && (method_is_head || content_data_size > 0))
142 {
143 assert(worker->m_Service->m_ReportProgressCallback);
144
145 dmHttpDDF::HttpRequestProgress progress = {};
146 progress.m_BytesReceived = bytes_received;
147 progress.m_BytesTotal = content_length;
148 progress.m_Url = worker->m_Request->m_Url;
149 worker->m_Service->m_ReportProgressCallback(&progress, &worker->m_CurrentRequesterURL, worker->m_ResponseUserData2);
150 }
151 }
152
153 uint32_t HttpSendContentLength(dmHttpClient::HResponse response, void* user_data)
154 {

Callers

nothing calls this directly

Calls 6

PushArrayMethod · 0.80
assertFunction · 0.50
SetSizeMethod · 0.45
CapacityMethod · 0.45
SizeMethod · 0.45
OffsetCapacityMethod · 0.45

Tested by

no test coverage detected