ウォンツテック

そでやまのーと

bucketメモリ操作関連

APU_DECLARE_NONSTD(apr_status_t) apr_bucket_simple_copy(apr_bucket *a,                                                        apr_bucket **b)

apr_bucket_allocを呼び出し*bにセットしている。

apr_bucket_simple_split(apr_bucket *a,                                                         apr_size_t point)
{
  ...
  apr_bucket_simple_copy(a, &b);
  a->length  = point;
  b->length -= point;
  b->start  += point;

  APR_BUCKET_INSERT_AFTER(a, b);
  ...
}

apr_bucket_simple_copyを呼び出し、新しいbucketにaと同じデータ位置をセットしてbrigade(aの直後)にセットする。

static apr_status_t simple_bucket_read(apr_bucket *b, const char **str,
apr_size_t *len,
apr_read_type_e block)
{
    *str = (char *)b->data + b->start;
    *len = b->length;
    return APR_SUCCESS;
}