Lines Matching full:chunk
33 static bool chunk_is_empty(const struct buf_chunk *chunk) in chunk_is_empty() argument
35 return chunk->r_offset >= chunk->w_offset; in chunk_is_empty()
38 static bool chunk_is_full(const struct buf_chunk *chunk) in chunk_is_full() argument
40 return chunk->w_offset >= chunk->dlen; in chunk_is_full()
43 static size_t chunk_len(const struct buf_chunk *chunk) in chunk_len() argument
45 return chunk->w_offset - chunk->r_offset; in chunk_len()
48 static void chunk_reset(struct buf_chunk *chunk) in chunk_reset() argument
50 chunk->next = NULL; in chunk_reset()
51 chunk->r_offset = chunk->w_offset = 0; in chunk_reset()
54 static size_t chunk_append(struct buf_chunk *chunk, in chunk_append() argument
57 unsigned char *p = &chunk->x.data[chunk->w_offset]; in chunk_append()
58 size_t n = chunk->dlen - chunk->w_offset; in chunk_append()
59 DEBUGASSERT(chunk->dlen >= chunk->w_offset); in chunk_append()
63 chunk->w_offset += n; in chunk_append()
68 static size_t chunk_read(struct buf_chunk *chunk, in chunk_read() argument
71 unsigned char *p = &chunk->x.data[chunk->r_offset]; in chunk_read()
72 size_t n = chunk->w_offset - chunk->r_offset; in chunk_read()
73 DEBUGASSERT(chunk->w_offset >= chunk->r_offset); in chunk_read()
79 chunk->r_offset = chunk->w_offset = 0; in chunk_read()
84 chunk->r_offset += len; in chunk_read()
89 static size_t chunk_unwrite(struct buf_chunk *chunk, size_t len) in chunk_unwrite() argument
91 size_t n = chunk->w_offset - chunk->r_offset; in chunk_unwrite()
92 DEBUGASSERT(chunk->w_offset >= chunk->r_offset); in chunk_unwrite()
97 chunk->r_offset = chunk->w_offset = 0; in chunk_unwrite()
101 chunk->w_offset -= len; in chunk_unwrite()
106 static ssize_t chunk_slurpn(struct buf_chunk *chunk, size_t max_len, in chunk_slurpn() argument
110 unsigned char *p = &chunk->x.data[chunk->w_offset]; in chunk_slurpn()
111 size_t n = chunk->dlen - chunk->w_offset; /* free amount */ in chunk_slurpn()
114 DEBUGASSERT(chunk->dlen >= chunk->w_offset); in chunk_slurpn()
124 chunk->w_offset += nread; in chunk_slurpn()
129 static void chunk_peek(const struct buf_chunk *chunk, in chunk_peek() argument
132 DEBUGASSERT(chunk->w_offset >= chunk->r_offset); in chunk_peek()
133 *pbuf = &chunk->x.data[chunk->r_offset]; in chunk_peek()
134 *plen = chunk->w_offset - chunk->r_offset; in chunk_peek()
137 static void chunk_peek_at(const struct buf_chunk *chunk, size_t offset, in chunk_peek_at() argument
140 offset += chunk->r_offset; in chunk_peek_at()
141 DEBUGASSERT(chunk->w_offset >= offset); in chunk_peek_at()
142 *pbuf = &chunk->x.data[offset]; in chunk_peek_at()
143 *plen = chunk->w_offset - offset; in chunk_peek_at()
146 static size_t chunk_skip(struct buf_chunk *chunk, size_t amount) in chunk_skip() argument
148 size_t n = chunk->w_offset - chunk->r_offset; in chunk_skip()
149 DEBUGASSERT(chunk->w_offset >= chunk->r_offset); in chunk_skip()
152 chunk->r_offset += n; in chunk_skip()
153 if(chunk->r_offset == chunk->w_offset) in chunk_skip()
154 chunk->r_offset = chunk->w_offset = 0; in chunk_skip()
161 struct buf_chunk *chunk; in chunk_list_free() local
163 chunk = *anchor; in chunk_list_free()
164 *anchor = chunk->next; in chunk_list_free()
165 free(chunk); in chunk_list_free()
184 struct buf_chunk *chunk = NULL; in bufcp_take() local
187 chunk = pool->spare; in bufcp_take()
188 pool->spare = chunk->next; in bufcp_take()
190 chunk_reset(chunk); in bufcp_take()
191 *pchunk = chunk; in bufcp_take()
195 chunk = calloc(1, sizeof(*chunk) + pool->chunk_size); in bufcp_take()
196 if(!chunk) { in bufcp_take()
200 chunk->dlen = pool->chunk_size; in bufcp_take()
201 *pchunk = chunk; in bufcp_take()
206 struct buf_chunk *chunk) in bufcp_put() argument
209 free(chunk); in bufcp_put()
212 chunk_reset(chunk); in bufcp_put()
213 chunk->next = pool->spare; in bufcp_put()
214 pool->spare = chunk; in bufcp_put()
264 struct buf_chunk *chunk; in Curl_bufq_reset() local
266 chunk = q->head; in Curl_bufq_reset()
267 q->head = chunk->next; in Curl_bufq_reset()
268 chunk->next = q->spare; in Curl_bufq_reset()
269 q->spare = chunk; in Curl_bufq_reset()
276 const struct buf_chunk *chunk = q->head; in Curl_bufq_len() local
278 while(chunk) { in Curl_bufq_len()
279 len += chunk_len(chunk); in Curl_bufq_len()
280 chunk = chunk->next; in Curl_bufq_len()
304 struct buf_chunk *chunk = NULL; in get_spare() local
307 chunk = q->spare; in get_spare()
308 q->spare = chunk->next; in get_spare()
309 chunk_reset(chunk); in get_spare()
310 return chunk; in get_spare()
317 if(bufcp_take(q->pool, &chunk)) in get_spare()
320 return chunk; in get_spare()
323 chunk = calloc(1, sizeof(*chunk) + q->chunk_size); in get_spare()
324 if(!chunk) in get_spare()
326 chunk->dlen = q->chunk_size; in get_spare()
328 return chunk; in get_spare()
334 struct buf_chunk *chunk; in prune_head() local
337 chunk = q->head; in prune_head()
338 q->head = chunk->next; in prune_head()
339 if(q->tail == chunk) in prune_head()
342 bufcp_put(q->pool, chunk); in prune_head()
350 free(chunk); in prune_head()
354 chunk->next = q->spare; in prune_head()
355 q->spare = chunk; in prune_head()
361 struct buf_chunk *chunk) in chunk_prev()
364 if(head == chunk) in chunk_prev()
366 if(head->next == chunk) in chunk_prev()
375 struct buf_chunk *chunk; in prune_tail() local
378 chunk = q->tail; in prune_tail()
379 q->tail = chunk_prev(q->head, chunk); in prune_tail()
382 if(q->head == chunk) in prune_tail()
385 bufcp_put(q->pool, chunk); in prune_tail()
393 free(chunk); in prune_tail()
397 chunk->next = q->spare; in prune_tail()
398 q->spare = chunk; in prune_tail()
405 struct buf_chunk *chunk; in get_non_full_tail() local
409 chunk = get_spare(q); in get_non_full_tail()
410 if(chunk) { in get_non_full_tail()
413 q->tail->next = chunk; in get_non_full_tail()
414 q->tail = chunk; in get_non_full_tail()
418 q->head = q->tail = chunk; in get_non_full_tail()
421 return chunk; in get_non_full_tail()