All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
h2_proxy_util.h File Reference

Go to the source code of this file.

Data Structures

struct  h2_proxy_iqueue
struct  h2_proxy_ngheader
struct  h2_proxy_request


typedef struct h2_proxy_ihash_t h2_proxy_ihash_t
typedef int h2_proxy_ihash_iter_t (void *ctx, void *val)
typedef struct h2_proxy_iqueue h2_proxy_iqueue
typedef int h2_proxy_iq_cmp (int i1, int i2, void *ctx)
typedef struct h2_proxy_ngheader h2_proxy_ngheader
typedef struct h2_proxy_request h2_proxy_request


int h2_proxy_util_frame_print (const nghttp2_frame *frame, char *buffer, size_t maxlen)
h2_proxy_ihash_th2_proxy_ihash_create (apr_pool_t *pool, size_t offset_of_int)
size_t h2_proxy_ihash_count (h2_proxy_ihash_t *ih)
int h2_proxy_ihash_empty (h2_proxy_ihash_t *ih)
voidh2_proxy_ihash_get (h2_proxy_ihash_t *ih, int id)
int h2_proxy_ihash_iter (h2_proxy_ihash_t *ih, h2_proxy_ihash_iter_t *fn, void *ctx)
void h2_proxy_ihash_add (h2_proxy_ihash_t *ih, void *val)
void h2_proxy_ihash_remove (h2_proxy_ihash_t *ih, int id)
void h2_proxy_ihash_remove_val (h2_proxy_ihash_t *ih, void *val)
void h2_proxy_ihash_clear (h2_proxy_ihash_t *ih)
size_t h2_proxy_ihash_shift (h2_proxy_ihash_t *ih, void **buffer, size_t max)
size_t h2_proxy_ihash_ishift (h2_proxy_ihash_t *ih, int *buffer, size_t max)
h2_proxy_iqueueh2_proxy_iq_create (apr_pool_t *pool, int capacity)
int h2_proxy_iq_empty (h2_proxy_iqueue *q)
int h2_proxy_iq_count (h2_proxy_iqueue *q)
void h2_proxy_iq_add (h2_proxy_iqueue *q, int sid, h2_proxy_iq_cmp *cmp, void *ctx)
int h2_proxy_iq_remove (h2_proxy_iqueue *q, int sid)
void h2_proxy_iq_clear (h2_proxy_iqueue *q)
void h2_proxy_iq_sort (h2_proxy_iqueue *q, h2_proxy_iq_cmp *cmp, void *ctx)
int h2_proxy_iq_shift (h2_proxy_iqueue *q)
unsigned char h2_proxy_log2 (int n)
void h2_proxy_util_camel_case_header (char *s, size_t len)
int h2_proxy_res_ignore_header (const char *name, size_t len)
h2_proxy_ngheaderh2_proxy_util_nghd_make_req (apr_pool_t *p, const struct h2_proxy_request *req)
h2_proxy_requesth2_proxy_req_create (int id, apr_pool_t *pool, int serialize)
apr_status_t h2_proxy_req_make (h2_proxy_request *req, apr_pool_t *pool, const char *method, const char *scheme, const char *authority, const char *path, apr_table_t *headers)
const char * h2_proxy_link_reverse_map (request_rec *r, proxy_dir_conf *conf, const char *real_server_uri, const char *proxy_server_uri, const char *s)

Typedef Documentation

typedef int h2_proxy_ihash_iter_t(void *ctx, void *val)
typedef int h2_proxy_iq_cmp(int i1, int i2, void *ctx)

Comparator for two int to determine their order.

i1first int to compare
i2second int to compare
ctxprovided user data
value is the same as for strcmp() and has the effect: == 0: s1 and s2 are treated equal in ordering < 0: s1 should be sorted before s2 > 0: s2 should be sorted before s1

Function Documentation

void h2_proxy_ihash_add ( h2_proxy_ihash_t ih,
void val 
void h2_proxy_ihash_clear ( h2_proxy_ihash_t ih)
size_t h2_proxy_ihash_count ( h2_proxy_ihash_t ih)
h2_proxy_ihash_t* h2_proxy_ihash_create ( apr_pool_t pool,
size_t  offset_of_int 

Create a hash for structures that have an identifying int member.

poolthe pool to use
offset_of_intthe offsetof() the int member in the struct
int h2_proxy_ihash_empty ( h2_proxy_ihash_t ih)
void* h2_proxy_ihash_get ( h2_proxy_ihash_t ih,
int  id 
size_t h2_proxy_ihash_ishift ( h2_proxy_ihash_t ih,
int buffer,
size_t  max 
int h2_proxy_ihash_iter ( h2_proxy_ihash_t ih,
h2_proxy_ihash_iter_t fn,
void ctx 

Iterate over the hash members (without defined order) and invoke fn for each member until 0 is returned.

ihthe hash to iterate over
fnthe function to invoke on each member
ctxuser supplied data passed into each iteration call
0 if one iteration returned 0, otherwise != 0
void h2_proxy_ihash_remove ( h2_proxy_ihash_t ih,
int  id 
void h2_proxy_ihash_remove_val ( h2_proxy_ihash_t ih,
void val 
size_t h2_proxy_ihash_shift ( h2_proxy_ihash_t ih,
void **  buffer,
size_t  max 
void h2_proxy_iq_add ( h2_proxy_iqueue q,
int  sid,
h2_proxy_iq_cmp cmp,
void ctx 

Add a stream id to the queue.

qthe queue to append the task to
sidthe stream id to add
cmpthe comparator for sorting
ctxuser data for comparator
void h2_proxy_iq_clear ( h2_proxy_iqueue q)

Remove all entries in the queue.

int h2_proxy_iq_count ( h2_proxy_iqueue q)

Return the number of int in the queue.

qthe queue to get size on
h2_proxy_iqueue* h2_proxy_iq_create ( apr_pool_t pool,
int  capacity 

Allocate a new queue from the pool and initialize.

idthe identifier of the queue
poolthe memory pool
int h2_proxy_iq_empty ( h2_proxy_iqueue q)

Return != 0 iff there are no tasks in the queue.

qthe queue to check
int h2_proxy_iq_remove ( h2_proxy_iqueue q,
int  sid 

Remove the stream id from the queue. Return != 0 iff task was found in queue.

qthe task queue
sidthe stream id to remove
!= 0 iff task was found in queue
int h2_proxy_iq_shift ( h2_proxy_iqueue q)

Get the first stream id from the queue or NULL if the queue is empty. The task will be removed.

qthe queue to get the first task from
the first stream id of the queue, 0 if empty
void h2_proxy_iq_sort ( h2_proxy_iqueue q,
h2_proxy_iq_cmp cmp,
void ctx 

Sort the stream idqueue again. Call if the task ordering has changed.

qthe queue to sort
cmpthe comparator for sorting
ctxuser data for the comparator
const char* h2_proxy_link_reverse_map ( request_rec r,
proxy_dir_conf conf,
const char *  real_server_uri,
const char *  proxy_server_uri,
const char *  s 
unsigned char h2_proxy_log2 ( int  n)
h2_proxy_request* h2_proxy_req_create ( int  id,
apr_pool_t pool,
int  serialize 
apr_status_t h2_proxy_req_make ( h2_proxy_request req,
apr_pool_t pool,
const char *  method,
const char *  scheme,
const char *  authority,
const char *  path,
apr_table_t headers 
int h2_proxy_res_ignore_header ( const char *  name,
size_t  len 
void h2_proxy_util_camel_case_header ( char *  s,
size_t  len 
int h2_proxy_util_frame_print ( const nghttp2_frame *  frame,
char *  buffer,
size_t  maxlen 
h2_proxy_ngheader* h2_proxy_util_nghd_make_req ( apr_pool_t p,
const struct h2_proxy_request req