Lines Matching refs:cache
165 void rw_cache_init(TRWCache* cache, TSkBuffMng* pool) in rw_cache_init() argument
167 TAILQ_INIT(&cache->list); in rw_cache_init()
168 cache->len = 0; in rw_cache_init()
169 cache->count = 0; in rw_cache_init()
170 cache->pool = pool; in rw_cache_init()
173 void rw_cache_destroy(TRWCache* cache) in rw_cache_destroy() argument
175 if ((cache == NULL) || (cache->pool == NULL)) { in rw_cache_destroy()
181 TAILQ_FOREACH_SAFE(item, &cache->list, entry, tmp) in rw_cache_destroy()
183 TAILQ_REMOVE(&cache->list, item, entry); in rw_cache_destroy()
184 free_sk_buffer(cache->pool, item); in rw_cache_destroy()
186 cache->count = 0; in rw_cache_destroy()
187 cache->len = 0; in rw_cache_destroy()
188 cache->pool = NULL; in rw_cache_destroy()
191 uint32_t cache_copy_out(TRWCache* cache, void* buff, uint32_t len) in cache_copy_out() argument
193 if ((cache == NULL) || (cache->pool == NULL)) { in cache_copy_out()
201 TAILQ_FOREACH_SAFE(item, &cache->list, entry, tmp) in cache_copy_out()
218 if (cache->count > 0) { in cache_copy_out()
219 cache->count--; in cache_copy_out()
221 TAILQ_REMOVE(&cache->list, item, entry); in cache_copy_out()
222 free_sk_buffer(cache->pool, item); in cache_copy_out()
231 if (cache->len > skip_len) in cache_copy_out()
233 cache->len -= skip_len; in cache_copy_out()
237 cache->len = 0; in cache_copy_out()
243 void cache_skip_data(TRWCache* cache, uint32_t len) in cache_skip_data() argument
245 cache_copy_out(cache, NULL, len); in cache_skip_data()
248 void cache_append_buffer(TRWCache* cache, TSkBuffer* buff) in cache_append_buffer() argument
250 if ((NULL == cache) || (NULL == buff)) in cache_append_buffer()
255 TAILQ_INSERT_TAIL(&cache->list, buff, entry); in cache_append_buffer()
256 cache->len += buff->data_len; in cache_append_buffer()
257 cache->count++; in cache_append_buffer()
260 TSkBuffer* cache_skip_first_buffer(TRWCache* cache) in cache_skip_first_buffer() argument
262 TSkBuffer* buff = TAILQ_FIRST(&cache->list); in cache_skip_first_buffer()
263 if ((NULL == cache) || (NULL == buff)) in cache_skip_first_buffer()
268 TAILQ_REMOVE(&cache->list, buff, entry); in cache_skip_first_buffer()
269 if (cache->len >= buff->data_len) in cache_skip_first_buffer()
271 cache->len -= buff->data_len; in cache_skip_first_buffer()
274 if (cache->count > 0) in cache_skip_first_buffer()
276 cache->count--; in cache_skip_first_buffer()
282 int32_t cache_append_data(TRWCache* cache, const void* data, uint32_t len) in cache_append_data() argument
284 if ((NULL == data) || (NULL == cache) || (NULL == cache->pool)) in cache_append_data()
297 TSkBuffer* tail = TAILQ_LAST(&cache->list, __sk_buff_list); in cache_append_data()
309 cache->len += len; in cache_append_data()
315 rw_cache_init(&keep_list, cache->pool); in cache_append_data()
319 TSkBuffer* item = alloc_sk_buffer(cache->pool); in cache_append_data()
345 cache->len += len; in cache_append_data()
346 cache->count += keep_list.count; in cache_append_data()
347 TAILQ_CONCAT(&cache->list, &keep_list.list, entry); in cache_append_data()
352 int32_t cache_udp_recv(TRWCache* cache, uint32_t fd, struct sockaddr_in* remote_addr) in cache_udp_recv() argument
354 if (NULL == cache) in cache_udp_recv()
362 TSkBuffer* item = alloc_sk_buffer(cache->pool); in cache_udp_recv()
373 free_sk_buffer(cache->pool, item); in cache_udp_recv()
387 cache_append_buffer(cache, item); in cache_udp_recv()
394 int32_t cache_tcp_recv(TRWCache* cache, uint32_t fd) in cache_tcp_recv() argument
396 if (NULL == cache) in cache_tcp_recv()
404 TSkBuffer* item = TAILQ_LAST(&cache->list, __sk_buff_list); in cache_tcp_recv()
408 item = alloc_sk_buffer(cache->pool); in cache_tcp_recv()
413 cache_append_buffer(cache, item); in cache_tcp_recv()
440 cache->len += recvd_len; in cache_tcp_recv()
452 int32_t cache_tcp_send(TRWCache* cache, uint32_t fd) in cache_tcp_send() argument
454 if ((NULL == cache) || (NULL == cache->pool)) in cache_tcp_send()
459 if (cache->len == 0) in cache_tcp_send()
467 TAILQ_FOREACH_SAFE(item, &cache->list, entry, tmp) in cache_tcp_send()
483 cache_skip_data(cache, total); in cache_tcp_send()
496 int32_t cache_tcp_send_buff(TRWCache* cache, uint32_t fd, const void* data, uint32_t len) in cache_tcp_send_buff() argument
498 if ((NULL == cache) || (NULL == data)) in cache_tcp_send_buff()
503 int32_t ret = cache_tcp_send(cache, fd); in cache_tcp_send_buff()
511 if (cache->len == 0) in cache_tcp_send_buff()
529 int32_t rc = cache_append_data(cache, (char*)data + send_len, len - send_len); in cache_tcp_send_buff()
541 TRWCache* cache = (TRWCache*)multi; in get_data_len() local
542 if (NULL == cache) { in get_data_len()
545 return cache->len; in get_data_len()
551 TRWCache* cache = (TRWCache*)multi; in get_block_count() local
552 if (NULL == cache) { in get_block_count()
555 return cache->count; in get_block_count()
561 TRWCache* cache = (TRWCache*)multi; in get_first_block() local
562 if (NULL == cache) { in get_first_block()
565 return (TBuffBlockPtr)TAILQ_FIRST(&cache->list); in get_first_block()
571 TRWCache* cache = (TRWCache*)multi; in get_next_block() local
573 if ((NULL == cache) || (NULL == item)) in get_next_block()
603 TRWCache* cache = (TRWCache*)multi; in read_cache_data() local
604 if (NULL == cache) { in read_cache_data()
612 TAILQ_FOREACH_SAFE(item, &cache->list, entry, tmp) in read_cache_data()
642 TRWCache* cache = (TRWCache*)multi; in read_cache_begin() local
643 if (NULL == cache) { in read_cache_begin()
647 if (begin >= cache->len) { in read_cache_begin()
655 TAILQ_FOREACH(item, &cache->list, entry) in read_cache_begin()