X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=buffer_tree.c;h=d92d9863e10e2b4081fba91a35b06233933a15cc;hp=9be53201f76c9400a320688cde6540c4ca227d05;hb=d6f52cebbb178c884ba54ea782efa56a009493db;hpb=635ffa801ce0d4f5055ad022a5de935acd83b056 diff --git a/buffer_tree.c b/buffer_tree.c index 9be53201..d92d9863 100644 --- a/buffer_tree.c +++ b/buffer_tree.c @@ -1,3 +1,10 @@ +/* + * Copyright (C) 2009-2010 Andre Noll + * + * Licensed under the GPL v2. For licencing details see COPYING. + */ + +/** \file buffer_tree.c Buffer tree and buffer pool implementations. */ #include #include @@ -627,7 +634,7 @@ void btr_consume(struct btr_node *btrn, size_t numbytes) numbytes -= br->btrb->size - br->consumed; btr_drop_buffer_reference(br); } - assert(true); + assert(false); } /* * We have a wrap buffer, consume from it. If in total, i.e. including @@ -776,15 +783,6 @@ size_t btr_get_output_queue_size(struct btr_node *btrn) return max_size; } -int btr_exec(struct btr_node *btrn, const char *command, char **value_result) -{ - if (!btrn) - return -ERRNO_TO_PARA_ERROR(EINVAL); - if (!btrn->execute) - return -ERRNO_TO_PARA_ERROR(ENOTSUP); - return btrn->execute(btrn, command, value_result); -} - /** * Execute a inter-node command on a parent node. * @@ -854,7 +852,7 @@ static void merge_input_pool(struct btr_node *btrn, size_t dest_size) struct btr_buffer_reference *br, *wbr = NULL; int num_refs; /* including wrap buffer */ char *buf, *buf1 = NULL, *buf2 = NULL; - size_t sz, sz1 = 0, sz2 = 0; + size_t sz, sz1 = 0, sz2 = 0, wb_consumed = 0; br = get_first_input_br(btrn); if (!br || br_available_bytes(br) >= dest_size) @@ -871,6 +869,7 @@ static void merge_input_pool(struct btr_node *btrn, size_t dest_size) wbr = br; if (sz >= dest_size) return; + wb_consumed = br->consumed; continue; } if (!buf1) { @@ -890,7 +889,7 @@ static void merge_input_pool(struct btr_node *btrn, size_t dest_size) assert(buf2 + sz2 == buf); sz2 += sz; next: - if (sz1 + sz2 >= dest_size) + if (sz1 + sz2 >= dest_size + wb_consumed) break; } if (!buf2) /* nothing to do */ @@ -1068,7 +1067,7 @@ struct btr_node *btr_search_node(const char *name, struct btr_node *root) } /** 640K ought to be enough for everybody ;) */ -#define BTRN_MAX_PENDING (640 * 1024) +#define BTRN_MAX_PENDING (96 * 1024) /** * Return the current state of a buffer tree node.