MCPcopy Create free account
hub / github.com/F-Stack/f-stack / cache_copy_out

Function cache_copy_out

adapter/micro_thread/mt_cache.cpp:191–241  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

189}
190
191uint32_t cache_copy_out(TRWCache* cache, void* buff, uint32_t len)
192{
193 if ((cache == NULL) || (cache->pool == NULL)) {
194 return 0;
195 }
196
197 char* out_buff = (char*)buff;
198 uint32_t left = len, skip_len = 0;
199 TSkBuffer* item = NULL;
200 TSkBuffer* tmp = NULL;
201 TAILQ_FOREACH_SAFE(item, &cache->list, entry, tmp)
202 {
203 skip_len = (item->data_len > left) ? left : item->data_len;
204 if (out_buff != NULL)
205 {
206 memcpy(out_buff, item->data, skip_len);
207 out_buff += skip_len;
208 }
209
210 left -= skip_len;
211 item->data_len -= skip_len;
212 item->data += skip_len;
213 if (item->data_len > 0)
214 {
215 break;
216 }
217
218 if (cache->count > 0) {
219 cache->count--;
220 }
221 TAILQ_REMOVE(&cache->list, item, entry);
222 free_sk_buffer(cache->pool, item);
223
224 if (left == 0)
225 {
226 break;
227 }
228 }
229
230 skip_len = len - left;
231 if (cache->len > skip_len)
232 {
233 cache->len -= skip_len;
234 }
235 else
236 {
237 cache->len = 0;
238 }
239
240 return skip_len;
241}
242
243void cache_skip_data(TRWCache* cache, uint32_t len)
244{

Callers 1

cache_skip_dataFunction · 0.85

Calls 2

free_sk_bufferFunction · 0.85
memcpyFunction · 0.50

Tested by

no test coverage detected