⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util_filter.h

📁 Apache HTTP Server 是一个功能强大的灵活的与HTTP/1.1相兼容的web服务器.这里给出的是Apache HTTP服务器的源码。
💻 H
📖 第 1 页 / 共 2 页
字号:
/** * Get the current bucket brigade from the next filter on the filter * stack.  The filter returns an apr_status_t value.  If the bottom-most  * filter doesn't read from the network, then ::AP_NOBODY_READ is returned. * The bucket brigade will be empty when there is nothing left to get. * @param filter The next filter in the chain * @param bucket The current bucket brigade.  The original brigade passed *               to ap_get_brigade() must be empty. * @param mode   The way in which the data should be read * @param block  How the operations should be performed *               ::APR_BLOCK_READ, ::APR_NONBLOCK_READ * @param readbytes How many bytes to read from the next filter. */AP_DECLARE(apr_status_t) ap_get_brigade(ap_filter_t *filter,                                         apr_bucket_brigade *bucket,                                         ap_input_mode_t mode,                                        apr_read_type_e block,                                         apr_off_t readbytes);/** * Pass the current bucket brigade down to the next filter on the filter * stack.  The filter returns an apr_status_t value.  If the bottom-most  * filter doesn't write to the network, then ::AP_NOBODY_WROTE is returned. * The caller relinquishes ownership of the brigade. * @param filter The next filter in the chain * @param bucket The current bucket brigade */AP_DECLARE(apr_status_t) ap_pass_brigade(ap_filter_t *filter,                                         apr_bucket_brigade *bucket);/** * This function is used to register an input filter with the system.  * After this registration is performed, then a filter may be added  * into the filter chain by using ap_add_input_filter() and simply  * specifying the name. * * @param name The name to attach to the filter function * @param filter_func The filter function to name * @param filter_init The function to call before the filter handlers                       are invoked * @param ftype The type of filter function, either ::AP_FTYPE_CONTENT or *              ::AP_FTYPE_CONNECTION * @see add_input_filter() */AP_DECLARE(ap_filter_rec_t *) ap_register_input_filter(const char *name,                                          ap_in_filter_func filter_func,                                          ap_init_filter_func filter_init,                                          ap_filter_type ftype);/** * This function is used to register an output filter with the system.  * After this registration is performed, then a filter may be added  * into the filter chain by using ap_add_output_filter() and simply  * specifying the name. * * @param name The name to attach to the filter function * @param filter_func The filter function to name * @param filter_init The function to call before the filter handlers  *                    are invoked * @param ftype The type of filter function, either ::AP_FTYPE_CONTENT or *              ::AP_FTYPE_CONNECTION * @see ap_add_output_filter() */AP_DECLARE(ap_filter_rec_t *) ap_register_output_filter(const char *name,                                            ap_out_filter_func filter_func,                                            ap_init_filter_func filter_init,                                            ap_filter_type ftype);/** * Adds a named filter into the filter chain on the specified request record. * The filter will be installed with the specified context pointer. * * Filters added in this way will always be placed at the end of the filters * that have the same type (thus, the filters have the same order as the * calls to ap_add_filter). If the current filter chain contains filters * from another request, then this filter will be added before those other * filters. *  * To re-iterate that last comment.  This function is building a FIFO * list of filters.  Take note of that when adding your filter to the chain. * * @param name The name of the filter to add * @param ctx Context data to provide to the filter * @param r The request to add this filter for (or NULL if it isn't associated with a request) * @param c The connection to add the fillter for */AP_DECLARE(ap_filter_t *) ap_add_input_filter(const char *name, void *ctx,                                              request_rec *r, conn_rec *c);/** * Variant of ap_add_input_filter() that accepts a registered filter handle * (as returned by ap_register_input_filter()) rather than a filter name * * @param f The filter handle to add * @param ctx Context data to provide to the filter * @param r The request to add this filter for (or NULL if it isn't associated with a request) * @param c The connection to add the fillter for */AP_DECLARE(ap_filter_t *) ap_add_input_filter_handle(ap_filter_rec_t *f,                                                     void *ctx,                                                     request_rec *r,                                                     conn_rec *c);/** * Returns the filter handle for use with ap_add_input_filter_handle. * * @param name The filter name to look up */AP_DECLARE(ap_filter_rec_t *) ap_get_input_filter_handle(const char *name);/** * Add a filter to the current request.  Filters are added in a FIFO manner. * The first filter added will be the first filter called. * @param name The name of the filter to add * @param ctx Context data to set in the filter * @param r The request to add this filter for (or NULL if it isn't associated with a request) * @param c The connection to add this filter for */AP_DECLARE(ap_filter_t *) ap_add_output_filter(const char *name, void *ctx,                                                request_rec *r, conn_rec *c);/** * Variant of ap_add_output_filter() that accepts a registered filter handle * (as returned by ap_register_output_filter()) rather than a filter name * * @param f The filter handle to add * @param r The request to add this filter for (or NULL if it isn't associated with a request) * @param c The connection to add the fillter for */AP_DECLARE(ap_filter_t *) ap_add_output_filter_handle(ap_filter_rec_t *f,                                                      void *ctx,                                                      request_rec *r,                                                      conn_rec *c);/** * Returns the filter handle for use with ap_add_output_filter_handle. * * @param name The filter name to look up */AP_DECLARE(ap_filter_rec_t *) ap_get_output_filter_handle(const char *name);/** * Remove an input filter from either the request or connection stack * it is associated with. * @param f The filter to remove */AP_DECLARE(void) ap_remove_input_filter(ap_filter_t *f);/** * Remove an output filter from either the request or connection stack * it is associated with. * @param f The filter to remove */AP_DECLARE(void) ap_remove_output_filter(ap_filter_t *f);/* The next two filters are for abstraction purposes only.  They could be * done away with, but that would require that we break modules if we ever * want to change our filter registration method.  The basic idea, is that * all filters have a place to store data, the ctx pointer.  These functions * fill out that pointer with a bucket brigade, and retrieve that data on * the next call.  The nice thing about these functions, is that they * automatically concatenate the bucket brigades together for you.  This means * that if you have already stored a brigade in the filters ctx pointer, then * when you add more it will be tacked onto the end of that brigade.  When * you retrieve data, if you pass in a bucket brigade to the get function, * it will append the current brigade onto the one that you are retrieving. *//** * prepare a bucket brigade to be setaside.  If a different brigade was  * set-aside earlier, then the two brigades are concatenated together. * @param f The current filter * @param save_to The brigade that was previously set-aside.  Regardless, the *             new bucket brigade is returned in this location. * @param b The bucket brigade to save aside.  This brigade is always empty *          on return * @param p Ensure that all data in the brigade lives as long as this pool */AP_DECLARE(apr_status_t) ap_save_brigade(ap_filter_t *f,                                         apr_bucket_brigade **save_to,                                         apr_bucket_brigade **b, apr_pool_t *p);    /** * Flush function for apr_brigade_* calls.  This calls ap_pass_brigade * to flush the brigade if the brigade buffer overflows. * @param bb The brigade to flush * @param ctx The filter to pass the brigade to * @note this function has nothing to do with FLUSH buckets. It is simply * a way to flush content out of a brigade and down a filter stack. */AP_DECLARE_NONSTD(apr_status_t) ap_filter_flush(apr_bucket_brigade *bb,                                                void *ctx);/** * Flush the current brigade down the filter stack. * @param f The current filter * @param bb The brigade to flush */AP_DECLARE(apr_status_t) ap_fflush(ap_filter_t *f, apr_bucket_brigade *bb);/** * Write a buffer for the current filter, buffering if possible. * @param f the filter doing the writing * @param bb The brigade to buffer into * @param data The data to write * @param nbyte The number of bytes in the data */#define ap_fwrite(f, bb, data, nbyte) \        apr_brigade_write(bb, ap_filter_flush, f, data, nbyte)/** * Write a buffer for the current filter, buffering if possible. * @param f the filter doing the writing * @param bb The brigade to buffer into * @param str The string to write */#define ap_fputs(f, bb, str) \        apr_brigade_puts(bb, ap_filter_flush, f, str)/** * Write a character for the current filter, buffering if possible. * @param f the filter doing the writing * @param bb The brigade to buffer into * @param c The character to write */#define ap_fputc(f, bb, c) \        apr_brigade_putc(bb, ap_filter_flush, f, c)/** * Write an unspecified number of strings to the current filter * @param f the filter doing the writing * @param bb The brigade to buffer into * @param ... The strings to write */AP_DECLARE_NONSTD(apr_status_t) ap_fputstrs(ap_filter_t *f,                                            apr_bucket_brigade *bb,                                            ...);/** * Output data to the filter in printf format * @param f the filter doing the writing * @param bb The brigade to buffer into * @param fmt The format string * @param ... The argumets to use to fill out the format string */AP_DECLARE_NONSTD(apr_status_t) ap_fprintf(ap_filter_t *f,                                           apr_bucket_brigade *bb,                                           const char *fmt,                                           ...)        __attribute__((format(printf,3,4)));                                    #ifdef __cplusplus}#endif#endif  /* !AP_FILTER_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -