Lines Matching refs:buffer

136 #define CHAIN_SPACE_PTR(ch) ((ch)->buffer + (ch)->misalign + (ch)->off)
191 chain->buffer = EVBUFFER_CHAIN_EXTRA(u_char, chain); in evbuffer_chain_new()
211 (*info->cleanupfn)(chain->buffer, in evbuffer_chain_free()
220 if (munmap(chain->buffer, chain->buffer_len) == -1) in evbuffer_chain_free()
355 struct evbuffer *buffer; in evbuffer_new() local
357 buffer = mm_calloc(1, sizeof(struct evbuffer)); in evbuffer_new()
358 if (buffer == NULL) in evbuffer_new()
361 TAILQ_INIT(&buffer->callbacks); in evbuffer_new()
362 buffer->refcnt = 1; in evbuffer_new()
363 buffer->last_with_datap = &buffer->first; in evbuffer_new()
365 return (buffer); in evbuffer_new()
402 evbuffer_defer_callbacks(struct evbuffer *buffer, struct event_base *base) in evbuffer_defer_callbacks() argument
404 EVBUFFER_LOCK(buffer); in evbuffer_defer_callbacks()
405 buffer->cb_queue = event_base_get_deferred_cb_queue(base); in evbuffer_defer_callbacks()
406 buffer->deferred_cbs = 1; in evbuffer_defer_callbacks()
407 event_deferred_cb_init(&buffer->deferred, in evbuffer_defer_callbacks()
408 evbuffer_deferred_callback, buffer); in evbuffer_defer_callbacks()
409 EVBUFFER_UNLOCK(buffer); in evbuffer_defer_callbacks()
446 evbuffer_run_callbacks(struct evbuffer *buffer, int running_deferred) in evbuffer_run_callbacks() argument
457 } else if (buffer->deferred_cbs) { in evbuffer_run_callbacks()
468 ASSERT_EVBUFFER_LOCKED(buffer); in evbuffer_run_callbacks()
470 if (TAILQ_EMPTY(&buffer->callbacks)) { in evbuffer_run_callbacks()
471 buffer->n_add_for_cb = buffer->n_del_for_cb = 0; in evbuffer_run_callbacks()
474 if (buffer->n_add_for_cb == 0 && buffer->n_del_for_cb == 0) in evbuffer_run_callbacks()
477 new_size = buffer->total_len; in evbuffer_run_callbacks()
478 info.orig_size = new_size + buffer->n_del_for_cb - buffer->n_add_for_cb; in evbuffer_run_callbacks()
479 info.n_added = buffer->n_add_for_cb; in evbuffer_run_callbacks()
480 info.n_deleted = buffer->n_del_for_cb; in evbuffer_run_callbacks()
482 buffer->n_add_for_cb = 0; in evbuffer_run_callbacks()
483 buffer->n_del_for_cb = 0; in evbuffer_run_callbacks()
485 for (cbent = TAILQ_FIRST(&buffer->callbacks); in evbuffer_run_callbacks()
486 cbent != TAILQ_END(&buffer->callbacks); in evbuffer_run_callbacks()
496 cbent->cb.cb_obsolete(buffer, in evbuffer_run_callbacks()
499 cbent->cb.cb_func(buffer, &info, cbent->cbarg); in evbuffer_run_callbacks()
504 evbuffer_invoke_callbacks(struct evbuffer *buffer) in evbuffer_invoke_callbacks() argument
506 if (TAILQ_EMPTY(&buffer->callbacks)) { in evbuffer_invoke_callbacks()
507 buffer->n_add_for_cb = buffer->n_del_for_cb = 0; in evbuffer_invoke_callbacks()
511 if (buffer->deferred_cbs) { in evbuffer_invoke_callbacks()
512 if (buffer->deferred.queued) in evbuffer_invoke_callbacks()
514 _evbuffer_incref_and_lock(buffer); in evbuffer_invoke_callbacks()
515 if (buffer->parent) in evbuffer_invoke_callbacks()
516 bufferevent_incref(buffer->parent); in evbuffer_invoke_callbacks()
517 EVBUFFER_UNLOCK(buffer); in evbuffer_invoke_callbacks()
518 event_deferred_cb_schedule(buffer->cb_queue, &buffer->deferred); in evbuffer_invoke_callbacks()
521 evbuffer_run_callbacks(buffer, 0); in evbuffer_invoke_callbacks()
528 struct evbuffer *buffer = arg; in evbuffer_deferred_callback() local
532 EVBUFFER_LOCK(buffer); in evbuffer_deferred_callback()
533 parent = buffer->parent; in evbuffer_deferred_callback()
534 evbuffer_run_callbacks(buffer, 1); in evbuffer_deferred_callback()
535 _evbuffer_decref_and_unlock(buffer); in evbuffer_deferred_callback()
541 evbuffer_remove_all_callbacks(struct evbuffer *buffer) in evbuffer_remove_all_callbacks() argument
545 while ((cbent = TAILQ_FIRST(&buffer->callbacks))) { in evbuffer_remove_all_callbacks()
546 TAILQ_REMOVE(&buffer->callbacks, cbent, next); in evbuffer_remove_all_callbacks()
552 _evbuffer_decref_and_unlock(struct evbuffer *buffer) in _evbuffer_decref_and_unlock() argument
555 ASSERT_EVBUFFER_LOCKED(buffer); in _evbuffer_decref_and_unlock()
557 EVUTIL_ASSERT(buffer->refcnt > 0); in _evbuffer_decref_and_unlock()
559 if (--buffer->refcnt > 0) { in _evbuffer_decref_and_unlock()
560 EVBUFFER_UNLOCK(buffer); in _evbuffer_decref_and_unlock()
564 for (chain = buffer->first; chain != NULL; chain = next) { in _evbuffer_decref_and_unlock()
568 evbuffer_remove_all_callbacks(buffer); in _evbuffer_decref_and_unlock()
569 if (buffer->deferred_cbs) in _evbuffer_decref_and_unlock()
570 event_deferred_cb_cancel(buffer->cb_queue, &buffer->deferred); in _evbuffer_decref_and_unlock()
572 EVBUFFER_UNLOCK(buffer); in _evbuffer_decref_and_unlock()
573 if (buffer->own_lock) in _evbuffer_decref_and_unlock()
574 EVTHREAD_FREE_LOCK(buffer->lock, EVTHREAD_LOCKTYPE_RECURSIVE); in _evbuffer_decref_and_unlock()
575 mm_free(buffer); in _evbuffer_decref_and_unlock()
579 evbuffer_free(struct evbuffer *buffer) in evbuffer_free() argument
581 EVBUFFER_LOCK(buffer); in evbuffer_free()
582 _evbuffer_decref_and_unlock(buffer); in evbuffer_free()
598 evbuffer_get_length(const struct evbuffer *buffer) in evbuffer_get_length() argument
602 EVBUFFER_LOCK(buffer); in evbuffer_get_length()
604 result = (buffer->total_len); in evbuffer_get_length()
606 EVBUFFER_UNLOCK(buffer); in evbuffer_get_length()
793 memcpy(tmp->buffer, chain->buffer + chain->misalign, in PRESERVE_PINNED()
1075 memcpy(data, chain->buffer + chain->misalign, chain->off); in evbuffer_copyout()
1086 memcpy(data, chain->buffer + chain->misalign, datlen); in evbuffer_copyout()
1166 evbuffer_add(dst, chain->buffer + chain->misalign, datlen); in evbuffer_remove_buffer()
1192 unsigned char *buffer, *result = NULL; in evbuffer_pullup() local
1212 result = chain->buffer + chain->misalign; in evbuffer_pullup()
1233 buffer = CHAIN_SPACE_PTR(chain); in evbuffer_pullup()
1241 buffer = chain->buffer + chain->misalign + chain->off; in evbuffer_pullup()
1251 buffer = tmp->buffer; in evbuffer_pullup()
1263 memcpy(buffer, chain->buffer + chain->misalign, chain->off); in evbuffer_pullup()
1265 buffer += chain->off; in evbuffer_pullup()
1275 memcpy(buffer, chain->buffer + chain->misalign, size); in evbuffer_pullup()
1293 result = (tmp->buffer + tmp->misalign); in evbuffer_pullup()
1305 evbuffer_readline(struct evbuffer *buffer) in evbuffer_readline() argument
1307 return evbuffer_readln(buffer, NULL, EVBUFFER_EOL_ANY); in evbuffer_readline()
1316 char *buffer = (char *)chain->buffer + chain->misalign; in evbuffer_strchr() local
1317 char *cp = memchr(buffer+i, chr, chain->off-i); in evbuffer_strchr()
1320 it->_internal.pos_in_chain = cp - buffer; in evbuffer_strchr()
1321 it->pos += (cp - buffer - i); in evbuffer_strchr()
1365 char *buffer = (char *)chain->buffer + chain->misalign; in evbuffer_find_eol_char() local
1366 char *cp = find_eol_char(buffer+i, chain->off-i); in evbuffer_find_eol_char()
1369 it->_internal.pos_in_chain = cp - buffer; in evbuffer_find_eol_char()
1370 it->pos += (cp - buffer) - i; in evbuffer_find_eol_char()
1393 char *buffer = (char *)chain->buffer + chain->misalign; in evbuffer_strspn() local
1397 if (buffer[i] == *p++) in evbuffer_strspn()
1427 return chain->buffer[chain->misalign + off]; in evbuffer_getchr()
1431 evbuffer_search_eol(struct evbuffer *buffer, in evbuffer_search_eol() argument
1439 EVBUFFER_LOCK(buffer); in evbuffer_search_eol()
1445 it._internal.chain = buffer->first; in evbuffer_search_eol()
1459 it = evbuffer_search(buffer, "\r\n", 2, &it); in evbuffer_search_eol()
1473 buffer, &it, "\r\n", 2)) { in evbuffer_search_eol()
1477 if (evbuffer_ptr_set(buffer, &it, 1, in evbuffer_search_eol()
1494 EVBUFFER_UNLOCK(buffer); in evbuffer_search_eol()
1506 evbuffer_readln(struct evbuffer *buffer, size_t *n_read_out, in evbuffer_readln() argument
1514 EVBUFFER_LOCK(buffer); in evbuffer_readln()
1516 if (buffer->freeze_start) { in evbuffer_readln()
1520 it = evbuffer_search_eol(buffer, NULL, &extra_drain, eol_style); in evbuffer_readln()
1530 evbuffer_remove(buffer, line, n_to_copy); in evbuffer_readln()
1533 evbuffer_drain(buffer, extra_drain); in evbuffer_readln()
1536 EVBUFFER_UNLOCK(buffer); in evbuffer_readln()
1585 memcpy(chain->buffer + chain->misalign + chain->off, in evbuffer_add()
1596 memcpy(chain->buffer + chain->off, data, datlen); in evbuffer_add()
1618 memcpy(chain->buffer + chain->misalign + chain->off, in evbuffer_add()
1628 memcpy(tmp->buffer, data, datlen); in evbuffer_add()
1678 memcpy(chain->buffer + chain->misalign - datlen, in evbuffer_prepend()
1687 memcpy(chain->buffer, in evbuffer_prepend()
1711 memcpy(tmp->buffer + tmp->misalign, data, datlen); in evbuffer_prepend()
1729 memmove(chain->buffer, chain->buffer + chain->misalign, chain->off); in evbuffer_chain_align()
1835 memcpy(tmp->buffer, chain->buffer + chain->misalign, in evbuffer_expand_singlechain()
2171 p = chain->buffer + chain->misalign + chain->off; in evbuffer_read()
2276 evbuffer_write_iovec(struct evbuffer *buffer, evutil_socket_t fd, in evbuffer_write_iovec() argument
2280 struct evbuffer_chain *chain = buffer->first; in evbuffer_write_iovec()
2286 ASSERT_EVBUFFER_LOCKED(buffer); in evbuffer_write_iovec()
2296 iov[i].IOV_PTR_FIELD = (void *) (chain->buffer + chain->misalign); in evbuffer_write_iovec()
2327 evbuffer_write_sendfile(struct evbuffer *buffer, evutil_socket_t fd, in evbuffer_write_sendfile() argument
2330 struct evbuffer_chain *chain = buffer->first; in evbuffer_write_sendfile()
2341 ASSERT_EVBUFFER_LOCKED(buffer); in evbuffer_write_sendfile()
2381 evbuffer_write_atmost(struct evbuffer *buffer, evutil_socket_t fd, in evbuffer_write_atmost() argument
2386 EVBUFFER_LOCK(buffer); in evbuffer_write_atmost()
2388 if (buffer->freeze_start) { in evbuffer_write_atmost()
2392 if (howmuch < 0 || (size_t)howmuch > buffer->total_len) in evbuffer_write_atmost()
2393 howmuch = buffer->total_len; in evbuffer_write_atmost()
2397 struct evbuffer_chain *chain = buffer->first; in evbuffer_write_atmost()
2399 n = evbuffer_write_sendfile(buffer, fd, howmuch); in evbuffer_write_atmost()
2403 n = evbuffer_write_iovec(buffer, fd, howmuch); in evbuffer_write_atmost()
2407 void *p = evbuffer_pullup(buffer, howmuch); in evbuffer_write_atmost()
2411 void *p = evbuffer_pullup(buffer, howmuch); in evbuffer_write_atmost()
2421 evbuffer_drain(buffer, n); in evbuffer_write_atmost()
2424 EVBUFFER_UNLOCK(buffer); in evbuffer_write_atmost()
2429 evbuffer_write(struct evbuffer *buffer, evutil_socket_t fd) in evbuffer_write() argument
2431 return evbuffer_write_atmost(buffer, fd, -1); in evbuffer_write()
2435 evbuffer_find(struct evbuffer *buffer, const unsigned char *what, size_t len) in evbuffer_find() argument
2440 EVBUFFER_LOCK(buffer); in evbuffer_find()
2442 ptr = evbuffer_search(buffer, (const char *)what, len, NULL); in evbuffer_find()
2446 search = evbuffer_pullup(buffer, ptr.pos + len); in evbuffer_find()
2450 EVBUFFER_UNLOCK(buffer); in evbuffer_find()
2528 r = memcmp(chain->buffer + chain->misalign + position, mem, in evbuffer_ptr_memcmp()
2542 evbuffer_search(struct evbuffer *buffer, const char *what, size_t len, const struct evbuffer_ptr *s… in evbuffer_search() argument
2544 return evbuffer_search_range(buffer, what, len, start, NULL); in evbuffer_search()
2548 evbuffer_search_range(struct evbuffer *buffer, const char *what, size_t len, const struct evbuffer_… in evbuffer_search_range() argument
2555 EVBUFFER_LOCK(buffer); in evbuffer_search_range()
2562 chain = pos._internal.chain = buffer->first; in evbuffer_search_range()
2576 chain->buffer + chain->misalign + in evbuffer_search_range()
2583 if (!evbuffer_ptr_memcmp(buffer, &pos, what, len)) { in evbuffer_search_range()
2608 EVBUFFER_UNLOCK(buffer); in evbuffer_search_range()
2613 evbuffer_peek(struct evbuffer *buffer, ev_ssize_t len, in evbuffer_peek() argument
2621 EVBUFFER_LOCK(buffer); in evbuffer_peek()
2629 vec[0].iov_base = chain->buffer + chain->misalign in evbuffer_peek()
2635 chain = buffer->first; in evbuffer_peek()
2641 len = buffer->total_len; in evbuffer_peek()
2651 vec[idx].iov_base = chain->buffer + chain->misalign; in evbuffer_peek()
2661 EVBUFFER_UNLOCK(buffer); in evbuffer_peek()
2670 char *buffer; in evbuffer_add_vprintf() local
2690 buffer = (char *)chain->buffer + chain->misalign + chain->off; in evbuffer_add_vprintf()
2694 buffer = (char*) CHAIN_SPACE_PTR(chain); in evbuffer_add_vprintf()
2702 sz = evutil_vsnprintf(buffer, space, fmt, aq); in evbuffer_add_vprintf()
2757 chain->buffer = __UNCONST(data); in evbuffer_add_reference()
2824 chain->buffer = NULL; /* no reading possible */ in evbuffer_add_file()
2872 chain->buffer = mapped; in evbuffer_add_file()
2948 evbuffer_setcb(struct evbuffer *buffer, evbuffer_cb cb, void *cbarg) in evbuffer_setcb() argument
2950 EVBUFFER_LOCK(buffer); in evbuffer_setcb()
2952 if (!TAILQ_EMPTY(&buffer->callbacks)) in evbuffer_setcb()
2953 evbuffer_remove_all_callbacks(buffer); in evbuffer_setcb()
2957 evbuffer_add_cb(buffer, NULL, cbarg); in evbuffer_setcb()
2961 EVBUFFER_UNLOCK(buffer); in evbuffer_setcb()
2965 evbuffer_add_cb(struct evbuffer *buffer, evbuffer_cb_func cb, void *cbarg) in evbuffer_add_cb() argument
2970 EVBUFFER_LOCK(buffer); in evbuffer_add_cb()
2974 TAILQ_INSERT_HEAD(&buffer->callbacks, e, next); in evbuffer_add_cb()
2975 EVBUFFER_UNLOCK(buffer); in evbuffer_add_cb()
2980 evbuffer_remove_cb_entry(struct evbuffer *buffer, in evbuffer_remove_cb_entry() argument
2983 EVBUFFER_LOCK(buffer); in evbuffer_remove_cb_entry()
2984 TAILQ_REMOVE(&buffer->callbacks, ent, next); in evbuffer_remove_cb_entry()
2985 EVBUFFER_UNLOCK(buffer); in evbuffer_remove_cb_entry()
2991 evbuffer_remove_cb(struct evbuffer *buffer, evbuffer_cb_func cb, void *cbarg) in evbuffer_remove_cb() argument
2995 EVBUFFER_LOCK(buffer); in evbuffer_remove_cb()
2996 TAILQ_FOREACH(cbent, &buffer->callbacks, next) { in evbuffer_remove_cb()
2998 result = evbuffer_remove_cb_entry(buffer, cbent); in evbuffer_remove_cb()
3003 EVBUFFER_UNLOCK(buffer); in evbuffer_remove_cb()
3008 evbuffer_cb_set_flags(struct evbuffer *buffer, in evbuffer_cb_set_flags() argument
3013 EVBUFFER_LOCK(buffer); in evbuffer_cb_set_flags()
3015 EVBUFFER_UNLOCK(buffer); in evbuffer_cb_set_flags()
3020 evbuffer_cb_clear_flags(struct evbuffer *buffer, in evbuffer_cb_clear_flags() argument
3025 EVBUFFER_LOCK(buffer); in evbuffer_cb_clear_flags()
3027 EVBUFFER_UNLOCK(buffer); in evbuffer_cb_clear_flags()
3032 evbuffer_freeze(struct evbuffer *buffer, int start) in evbuffer_freeze() argument
3034 EVBUFFER_LOCK(buffer); in evbuffer_freeze()
3036 buffer->freeze_start = 1; in evbuffer_freeze()
3038 buffer->freeze_end = 1; in evbuffer_freeze()
3039 EVBUFFER_UNLOCK(buffer); in evbuffer_freeze()
3044 evbuffer_unfreeze(struct evbuffer *buffer, int start) in evbuffer_unfreeze() argument
3046 EVBUFFER_LOCK(buffer); in evbuffer_unfreeze()
3048 buffer->freeze_start = 0; in evbuffer_unfreeze()
3050 buffer->freeze_end = 0; in evbuffer_unfreeze()
3051 EVBUFFER_UNLOCK(buffer); in evbuffer_unfreeze()
3057 evbuffer_cb_suspend(struct evbuffer *buffer, struct evbuffer_cb_entry *cb)
3060 cb->size_before_suspend = evbuffer_get_length(buffer);
3066 evbuffer_cb_unsuspend(struct evbuffer *buffer, struct evbuffer_cb_entry *cb)
3075 cb->cb(buffer, sz, evbuffer_get_length(buffer), cb->cbarg);