Apache2
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
h2_push.h
Go to the documentation of this file.
1 /* Licensed to the Apache Software Foundation (ASF) under one or more
2  * contributor license agreements. See the NOTICE file distributed with
3  * this work for additional information regarding copyright ownership.
4  * The ASF licenses this file to You under the Apache License, Version 2.0
5  * (the "License"); you may not use this file except in compliance with
6  * the License. You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef __mod_h2__h2_push__
18 #define __mod_h2__h2_push__
19 
20 #include "h2.h"
21 
22 struct h2_request;
23 struct h2_headers;
24 struct h2_ngheader;
25 struct h2_session;
26 struct h2_stream;
27 
28 typedef struct h2_push {
29  const struct h2_request *req;
31 } h2_push;
32 
33 typedef enum {
37 
39 
40 typedef void h2_push_digest_calc(h2_push_diary *diary, apr_uint64_t *phash, h2_push *push);
41 
42 struct h2_push_diary {
44  int NMax; /* Maximum for N, should size change be necessary */
45  int N; /* Current maximum number of entries, power of 2 */
46  apr_uint64_t mask; /* mask for relevant bits */
47  unsigned int mask_bits; /* number of relevant bits */
48  const char *authority;
51 };
52 
63  const struct h2_request *req,
64  apr_uint32_t push_policy,
65  const struct h2_headers *res);
66 
75 
81 
87  const struct h2_request *req,
88  const struct h2_headers *res);
101  int maxP, const char *authority,
102  const char **pdata, apr_size_t *plen);
103 
114 apr_status_t h2_push_diary_digest_set(h2_push_diary *diary, const char *authority,
115  const char *data, apr_size_t len);
116 
117 apr_status_t h2_push_diary_digest64_set(h2_push_diary *diary, const char *authority,
118  const char *data64url, apr_pool_t *pool);
119 
120 #endif /* defined(__mod_h2__h2_push__) */
size_t apr_size_t
Definition: apr.h:375
Definition: apr_tables.h:62
h2_push_diary * h2_push_diary_create(apr_pool_t *p, int N)
apr_bucket_brigade request_rec apr_pool_t * pool
Definition: mod_dav.h:552
Definition: h2_push.h:35
Definition: h2.h:75
apr_array_header_t * h2_push_diary_update(struct h2_session *session, apr_array_header_t *pushes)
int NMax
Definition: h2_push.h:44
h2_push_digest_type dtype
Definition: h2_push.h:49
Definition: h2.h:133
Definition: h2_push.h:28
const struct h2_request * req
Definition: h2_push.h:29
apr_uint64_t mask
Definition: h2_push.h:46
const char * authority
Definition: h2_push.h:48
apr_status_t h2_push_diary_digest_get(h2_push_diary *diary, apr_pool_t *p, int maxP, const char *authority, const char **pdata, apr_size_t *plen)
apr_status_t h2_push_diary_digest64_set(h2_push_diary *diary, const char *authority, const char *data64url, apr_pool_t *pool)
h2_priority * priority
Definition: h2_push.h:30
Definition: h2_stream.h:65
unsigned int apr_uint32_t
Definition: apr.h:334
h2_push_digest_type
Definition: h2_push.h:33
Definition: h2_push.h:42
apr_pool_t * p
Definition: h2_util.h:403
void h2_push_digest_calc(h2_push_diary *diary, apr_uint64_t *phash, h2_push *push)
Definition: h2_push.h:40
unsigned long apr_uint64_t
Definition: apr.h:372
Definition: h2.h:148
apr_array_header_t * entries
Definition: h2_push.h:43
apr_array_header_t * h2_push_collect(apr_pool_t *p, const struct h2_request *req, apr_uint32_t push_policy, const struct h2_headers *res)
struct apr_pool_t apr_pool_t
Definition: apr_pools.h:60
Definition: h2_push.h:34
apr_array_header_t * h2_push_collect_update(struct h2_stream *stream, const struct h2_request *req, const struct h2_headers *res)
int apr_status_t
Definition: apr_errno.h:44
h2_push_digest_calc * dcalc
Definition: h2_push.h:50
int N
Definition: h2_push.h:45
Definition: h2_session.h:76
struct h2_push h2_push
apr_status_t h2_push_diary_digest_set(h2_push_diary *diary, const char *authority, const char *data, apr_size_t len)
unsigned int mask_bits
Definition: h2_push.h:47