亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? apr_buckets.h

?? Apache_2.0.59-Openssl_0.9 配置tomcat. Apache_2.0.59-Openssl_0.9 配置tomcat.
?? H
?? 第 1 頁 / 共 4 頁
字號:
#if APR_NOT_DONE_YET
/**
 * consume nbytes from beginning of b -- call apr_bucket_destroy as
 * appropriate, and/or modify start on last element 
 * @param b The brigade to consume data from
 * @param nbytes The number of bytes to consume
 */
APU_DECLARE(void) apr_brigade_consume(apr_bucket_brigade *b,
                                      apr_off_t nbytes);
#endif

/**
 * Return the total length of the brigade.
 * @param bb The brigade to compute the length of
 * @param read_all Read unknown-length buckets to force a size
 * @param length Returns the length of the brigade, or -1 if the brigade has
 *               buckets of indeterminate length and read_all is 0.
 */
APU_DECLARE(apr_status_t) apr_brigade_length(apr_bucket_brigade *bb,
                                             int read_all,
                                             apr_off_t *length);

/**
 * Take a bucket brigade and store the data in a flat char*
 * @param bb The bucket brigade to create the char* from
 * @param c The char* to write into
 * @param len The maximum length of the char array. On return, it is the
 *            actual length of the char array.
 */
APU_DECLARE(apr_status_t) apr_brigade_flatten(apr_bucket_brigade *bb,
                                              char *c,
                                              apr_size_t *len);

/**
 * Creates a pool-allocated string representing a flat bucket brigade
 * @param bb The bucket brigade to create the char array from
 * @param c On return, the allocated char array
 * @param len On return, the length of the char array.
 * @param pool The pool to allocate the string from.
 */
APU_DECLARE(apr_status_t) apr_brigade_pflatten(apr_bucket_brigade *bb, 
                                               char **c,
                                               apr_size_t *len,
                                               apr_pool_t *pool);

/**
 * Split a brigade to represent one LF line.
 * @param bbOut The bucket brigade that will have the LF line appended to.
 * @param bbIn The input bucket brigade to search for a LF-line.
 * @param block The blocking mode to be used to split the line.
 * @param maxbytes The maximum bytes to read.  If this many bytes are seen
 *                 without a LF, the brigade will contain a partial line.
 */
APU_DECLARE(apr_status_t) apr_brigade_split_line(apr_bucket_brigade *bbOut,
                                                 apr_bucket_brigade *bbIn,
                                                 apr_read_type_e block,
                                                 apr_off_t maxbytes);

/**
 * create an iovec of the elements in a bucket_brigade... return number 
 * of elements used.  This is useful for writing to a file or to the
 * network efficiently.
 * @param b The bucket brigade to create the iovec from
 * @param vec The iovec to create
 * @param nvec The number of elements in the iovec. On return, it is the
 *             number of iovec elements actually filled out.
 */
APU_DECLARE(apr_status_t) apr_brigade_to_iovec(apr_bucket_brigade *b, 
                                               struct iovec *vec, int *nvec);

/**
 * This function writes a list of strings into a bucket brigade. 
 * @param b The bucket brigade to add to
 * @param flush The flush function to use if the brigade is full
 * @param ctx The structure to pass to the flush function
 * @param va A list of strings to add
 * @return APR_SUCCESS or error code.
 */
APU_DECLARE(apr_status_t) apr_brigade_vputstrs(apr_bucket_brigade *b,
                                               apr_brigade_flush flush,
                                               void *ctx,
                                               va_list va);

/**
 * This function writes a string into a bucket brigade.
 * @param b The bucket brigade to add to
 * @param flush The flush function to use if the brigade is full
 * @param ctx The structure to pass to the flush function
 * @param str The string to add
 * @param nbyte The number of bytes to write
 * @return APR_SUCCESS or error code
 */
APU_DECLARE(apr_status_t) apr_brigade_write(apr_bucket_brigade *b,
                                            apr_brigade_flush flush, void *ctx,
                                            const char *str, apr_size_t nbyte);

/**
 * This function writes multiple strings into a bucket brigade.
 * @param b The bucket brigade to add to
 * @param flush The flush function to use if the brigade is full
 * @param ctx The structure to pass to the flush function
 * @param vec The strings to add (address plus length for each)
 * @param nvec The number of entries in iovec
 * @return APR_SUCCESS or error code
 */
APU_DECLARE(apr_status_t) apr_brigade_writev(apr_bucket_brigade *b,
                                             apr_brigade_flush flush,
                                             void *ctx,
                                             const struct iovec *vec,
                                             apr_size_t nvec);

/**
 * This function writes a string into a bucket brigade.
 * @param bb The bucket brigade to add to
 * @param flush The flush function to use if the brigade is full
 * @param ctx The structure to pass to the flush function
 * @param str The string to add
 * @return APR_SUCCESS or error code
 */
APU_DECLARE(apr_status_t) apr_brigade_puts(apr_bucket_brigade *bb,
                                           apr_brigade_flush flush, void *ctx,
                                           const char *str);

/**
 * This function writes a character into a bucket brigade.
 * @param b The bucket brigade to add to
 * @param flush The flush function to use if the brigade is full
 * @param ctx The structure to pass to the flush function
 * @param c The character to add
 * @return APR_SUCCESS or error code
 */
APU_DECLARE(apr_status_t) apr_brigade_putc(apr_bucket_brigade *b,
                                           apr_brigade_flush flush, void *ctx,
                                           const char c);

/**
 * This function writes an unspecified number of strings into a bucket brigade.
 * @param b The bucket brigade to add to
 * @param flush The flush function to use if the brigade is full
 * @param ctx The structure to pass to the flush function
 * @param ... The strings to add
 * @return APR_SUCCESS or error code
 */
APU_DECLARE_NONSTD(apr_status_t) apr_brigade_putstrs(apr_bucket_brigade *b,
                                                     apr_brigade_flush flush,
                                                     void *ctx, ...);

/**
 * Evaluate a printf and put the resulting string at the end 
 * of the bucket brigade.
 * @param b The brigade to write to
 * @param flush The flush function to use if the brigade is full
 * @param ctx The structure to pass to the flush function
 * @param fmt The format of the string to write
 * @param ... The arguments to fill out the format
 * @return APR_SUCCESS or error code
 */
APU_DECLARE_NONSTD(apr_status_t) apr_brigade_printf(apr_bucket_brigade *b, 
                                                    apr_brigade_flush flush,
                                                    void *ctx,
                                                    const char *fmt, ...)
        __attribute__((format(printf,4,5)));

/**
 * Evaluate a printf and put the resulting string at the end 
 * of the bucket brigade.
 * @param b The brigade to write to
 * @param flush The flush function to use if the brigade is full
 * @param ctx The structure to pass to the flush function
 * @param fmt The format of the string to write
 * @param va The arguments to fill out the format
 * @return APR_SUCCESS or error code
 */
APU_DECLARE(apr_status_t) apr_brigade_vprintf(apr_bucket_brigade *b, 
                                              apr_brigade_flush flush,
                                              void *ctx,
                                              const char *fmt, va_list va);

/*  *****  Bucket freelist functions *****  */
/**
 * Create a bucket allocator.
 * @param p This pool's underlying apr_allocator_t is used to allocate memory
 *          for the bucket allocator.  When the pool is destroyed, the bucket
 *          allocator's cleanup routine will free all memory that has been
 *          allocated from it.
 * @remark  The reason the allocator gets its memory from the pool's
 *          apr_allocator_t rather than from the pool itself is because
 *          the bucket allocator will free large memory blocks back to the
 *          allocator when it's done with them, thereby preventing memory
 *          footprint growth that would occur if we allocated from the pool.
 * @warning The allocator must never be used by more than one thread at a time.
 */
APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create(apr_pool_t *p);

/**
 * Create a bucket allocator.
 * @param allocator This apr_allocator_t is used to allocate both the bucket
 *          allocator and all memory handed out by the bucket allocator.  The
 *          caller is responsible for destroying the bucket allocator and the
 *          apr_allocator_t -- no automatic cleanups will happen.
 * @warning The allocator must never be used by more than one thread at a time.
 */
APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create_ex(apr_allocator_t *allocator);

/**
 * Destroy a bucket allocator.
 * @param list The allocator to be destroyed
 */
APU_DECLARE_NONSTD(void) apr_bucket_alloc_destroy(apr_bucket_alloc_t *list);

/**
 * Allocate memory for use by the buckets.
 * @param size The amount to allocate.
 * @param list The allocator from which to allocate the memory.
 */
APU_DECLARE_NONSTD(void *) apr_bucket_alloc(apr_size_t size, apr_bucket_alloc_t *list);

/**
 * Free memory previously allocated with apr_bucket_alloc().
 * @param block The block of memory to be freed.
 */
APU_DECLARE_NONSTD(void) apr_bucket_free(void *block);


/*  *****  Bucket Functions  *****  */
/**
 * Free the resources used by a bucket. If multiple buckets refer to
 * the same resource it is freed when the last one goes away.
 * @see apr_bucket_delete()
 * @param e The bucket to destroy
 */
#define apr_bucket_destroy(e) do {					\
        (e)->type->destroy((e)->data);					\
        (e)->free(e);							\
    } while (0)

/**
 * Delete a bucket by removing it from its brigade (if any) and then
 * destroying it.
 * @remark This mainly acts as an aid in avoiding code verbosity.  It is
 * the preferred exact equivalent to:
 * <pre>
 *      APR_BUCKET_REMOVE(e);
 *      apr_bucket_destroy(e);
 * </pre>
 * @param e The bucket to delete
 */
#define apr_bucket_delete(e) do {					\
        APR_BUCKET_REMOVE(e);						\
        apr_bucket_destroy(e);						\
    } while (0)

/**
 * read the data from the bucket
 * @param e The bucket to read from
 * @param str The location to store the data in
 * @param len The amount of data read
 * @param block Whether the read function blocks
 */
#define apr_bucket_read(e,str,len,block) (e)->type->read(e, str, len, block)

/**
 * Setaside data so that stack data is not destroyed on returning from
 * the function
 * @param e The bucket to setaside
 * @param p The pool to setaside into
 */
#define apr_bucket_setaside(e,p) (e)->type->setaside(e,p)

/**
 * Split one bucket in two.
 * @param e The bucket to split
 * @param point The offset to split the bucket at
 */
#define apr_bucket_split(e,point) (e)->type->split(e, point)

/**
 * Copy a bucket.
 * @param e The bucket to copy
 * @param c Returns a pointer to the new bucket
 */
#define apr_bucket_copy(e,c) (e)->type->copy(e, c)

/* Bucket type handling */

/**
 * This function simply returns APR_SUCCESS to denote that the bucket does
 * not require anything to happen for its setaside() function. This is
 * appropriate for buckets that have "immortal" data -- the data will live
 * at least as long as the bucket.
 * @param data The bucket to setaside
 * @param pool The pool defining the desired lifetime of the bucket data
 * @return APR_SUCCESS
 */ 
APU_DECLARE_NONSTD(apr_status_t) apr_bucket_setaside_noop(apr_bucket *data,
                                                          apr_pool_t *pool);

/**
 * A place holder function that signifies that the setaside function was not
 * implemented for this bucket
 * @param data The bucket to setaside
 * @param pool The pool defining the desired lifetime of the bucket data
 * @return APR_ENOTIMPL
 */ 
APU_DECLARE_NONSTD(apr_status_t) apr_bucket_setaside_notimpl(apr_bucket *data,
                                                             apr_pool_t *pool);

/**
 * A place holder function that signifies that the split function was not
 * implemented for this bucket
 * @param data The bucket to split
 * @param point The location to split the bucket
 * @return APR_ENOTIMPL
 */ 
APU_DECLARE_NONSTD(apr_status_t) apr_bucket_split_notimpl(apr_bucket *data,
                                                          apr_size_t point);

/**
 * A place holder function that signifies that the copy function was not
 * implemented for this bucket
 * @param e The bucket to copy
 * @param c Returns a pointer to the new bucket
 * @return APR_ENOTIMPL
 */
APU_DECLARE_NONSTD(apr_status_t) apr_bucket_copy_notimpl(apr_bucket *e,
                                                         apr_bucket **c);

/**
 * A place holder function that signifies that this bucket does not need
 * to do anything special to be destroyed.  That's only the case for buckets
 * that either have no data (metadata buckets) or buckets whose data pointer
 * points to something that's not a bucket-type-specific structure, as with
 * simple buckets where data points to a string and pipe buckets where data
 * points directly to the apr_file_t.
 * @param data The bucket data to destroy
 */ 
APU_DECLARE_NONSTD(void) apr_bucket_destroy_noop(void *data);

/**
 * There is no apr_bucket_destroy_notimpl, because destruction is required
 * to be implemented (it could be a noop, but only if that makes sense for
 * the bucket type)
 */

/* There is no apr_bucket_read_notimpl, because it is a required function
 */


/* All of the bucket types implemented by the core */
/**
 * The flush bucket type.  This signifies that all data should be flushed to
 * the next filter.  The flush bucket should be sent with the other buckets.
 */
APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_flush;
/**
 * The EOS bucket type.  This signifies that there will be no more data, ever.
 * All filters MUST send all data to the next filter when they receive a
 * bucket of this type
 */
APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_eos;
/**
 * The FILE bucket type.  This bucket represents a file on disk
 */
APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_file;
/**
 * The HEAP bucket type.  This bucket represents a data allocated from the
 * heap.
 */
APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_heap;
#if APR_HAS_MMAP
/**
 * The MMAP bucket type.  This bucket represents an MMAP'ed file
 */
APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_mmap;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久av老司机精品网站导航| 亚洲人成影院在线观看| 精品一区二区三区影院在线午夜 | 亚洲乱码中文字幕| 色婷婷久久久久swag精品| 亚洲一区二区在线视频| 欧美色图在线观看| 蜜桃一区二区三区四区| 久久精品日韩一区二区三区| 成人动漫精品一区二区| 一区二区三区免费网站| 日韩午夜激情视频| 成人午夜大片免费观看| 亚洲另类春色国产| 日韩欧美区一区二| 国产成人免费视| 一区二区三区四区高清精品免费观看 | 日韩一级成人av| 国产伦精品一区二区三区免费迷| 国产精品毛片高清在线完整版| 99精品视频免费在线观看| 亚洲制服丝袜一区| 日韩免费视频一区| 91蜜桃在线免费视频| 日韩av一区二区三区| 日本一区二区三区四区| 欧美偷拍一区二区| 国产99久久久国产精品| 午夜精品久久久久久久久久| 精品成a人在线观看| 91久久国产最好的精华液| 国内精品国产成人国产三级粉色| 1024成人网色www| 欧美一级片在线看| 一本一道久久a久久精品| 免费av网站大全久久| 日韩毛片高清在线播放| 日韩欧美123| 在线视频国产一区| 国产成人av自拍| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品美女一区二区三区 | 日韩精品一区二区三区中文不卡 | 欧美在线视频全部完| 粉嫩蜜臀av国产精品网站| 美女视频一区二区| 亚洲主播在线播放| 国产精品美女久久久久久久久| 日韩一本二本av| 欧美在线一二三| 97久久人人超碰| 国产一区二三区| 日韩中文字幕1| 亚洲美女偷拍久久| 国产精品麻豆久久久| 欧美精品一区二区三区蜜桃视频| 欧美日产国产精品| 91成人免费网站| 99精品久久久久久| 丰满白嫩尤物一区二区| 国产美女一区二区三区| 裸体一区二区三区| 日韩二区三区四区| 亚洲国产综合91精品麻豆| 日韩一区中文字幕| 亚洲天堂a在线| 中文字幕二三区不卡| 国产午夜精品久久| 国产日韩精品一区二区三区| 精品国产免费一区二区三区香蕉| 9191成人精品久久| 欧美精品高清视频| 538在线一区二区精品国产| 欧美人伦禁忌dvd放荡欲情| 欧美色精品在线视频| 欧美伦理电影网| 欧美精品日韩精品| 91精品国产色综合久久| 欧美一二三区在线观看| 欧美大度的电影原声| 精品国产免费视频| 久久九九影视网| 国产精品国产三级国产有无不卡 | www.一区二区| 不卡av免费在线观看| 日本高清免费不卡视频| 欧美色爱综合网| 欧美一区二区在线视频| 欧美电视剧免费观看| 337p日本欧洲亚洲大胆色噜噜| 久久综合久久综合九色| 国产精品久久久一本精品| 专区另类欧美日韩| 亚洲成人动漫一区| 日本不卡免费在线视频| 国产精品一二三在| 一本到不卡免费一区二区| 欧美美女直播网站| 精品人在线二区三区| 国产精品拍天天在线| 亚洲午夜私人影院| 久久99蜜桃精品| 成人aa视频在线观看| 欧美性视频一区二区三区| 日韩精品最新网址| 国产精品久久一卡二卡| 午夜精品123| 国产 欧美在线| 欧美自拍偷拍午夜视频| 精品国产伦一区二区三区免费| 国产精品成人免费精品自在线观看 | 欧美视频在线一区二区三区| 日韩无一区二区| 国产精品热久久久久夜色精品三区| 亚洲国产精品久久人人爱| 国产一区二区三区四区在线观看| 一本色道综合亚洲| 欧美精品一区二| 亚洲成人av一区二区| 成人激情开心网| 欧美一区二区精品在线| 亚洲欧洲成人自拍| 久久99国内精品| 91精品福利视频| 久久久.com| 秋霞成人午夜伦在线观看| 色综合久久久久| 久久人人超碰精品| 日韩国产精品久久| 色综合久久久久久久| 国产欧美中文在线| 蜜桃视频第一区免费观看| 91国产精品成人| 日本一区二区三区免费乱视频| 亚洲国产成人av网| av成人动漫在线观看| 2017欧美狠狠色| 天天综合色天天综合色h| 91在线精品一区二区三区| 日韩精品中午字幕| 亚洲午夜久久久久| 99视频精品在线| 久久精品一区四区| 日本成人在线一区| 欧美日韩一卡二卡三卡| 亚洲欧美偷拍卡通变态| 成人爱爱电影网址| 国产亚洲va综合人人澡精品| 美女mm1313爽爽久久久蜜臀| 欧美亚洲综合网| 亚洲精品视频在线看| 成人国产精品视频| 国产欧美精品一区aⅴ影院| 久久福利资源站| 日韩午夜激情视频| 免费欧美高清视频| 日韩一区二区三区四区| 天堂精品中文字幕在线| 欧美日韩国产高清一区二区三区| 亚洲蜜桃精久久久久久久| 91麻豆蜜桃一区二区三区| 国产精品国模大尺度视频| 成人午夜视频免费看| 中文字幕制服丝袜成人av| 成人理论电影网| 亚洲欧洲另类国产综合| a美女胸又www黄视频久久| 国产精品麻豆久久久| 99久久精品情趣| 亚洲精品成人在线| 色欧美乱欧美15图片| 亚洲一区二区美女| 欧美日韩精品免费观看视频| 国产成人在线网站| 欧美国产97人人爽人人喊| 成人深夜福利app| 亚洲欧洲日韩女同| 91成人网在线| 日本午夜精品一区二区三区电影| 日韩欧美一区二区在线视频| 麻豆精品久久精品色综合| www欧美成人18+| 成人激情图片网| 亚洲一区二区三区在线播放| 欧美无砖砖区免费| 男女激情视频一区| 久久综合国产精品| 99久久er热在这里只有精品66| 一区二区三区 在线观看视频| 欧美亚洲国产bt| 久久99精品久久久久婷婷| 中文字幕不卡在线观看| 色婷婷精品大视频在线蜜桃视频| 午夜久久久久久久久久一区二区| 欧美一区二区三区四区久久| 国产精品一区免费在线观看| 1000精品久久久久久久久| 777色狠狠一区二区三区| 国模无码大尺度一区二区三区| 中文字幕第一页久久|