Author: rhuijben
Date: Mon Oct 19 16:16:29 2015
New Revision: 1709441

URL: http://svn.apache.org/viewvc?rev=1709441&view=rev
Log:
Following up on r1709439 add the missing changes to serf_bucket_types.h

* serf_bucket_types.h
  (serf_bucket_type_hpack): New bucket type.
  (SERF_BUCKET_IS_HPACK): New define.
  (serf_hpack_table_t): New typedef.
  (serf_bucket_hpack_create,
   serf_bucket_hpack_setc,
   serf_bucket_hpack_setx,
   serf_bucket_hpack_get): New function.
  (serf_bucket_hpack_do_callback_fn_t): New callback type.
  (serf_bucket_hpack_do): New function.

Modified:
    serf/trunk/serf_bucket_types.h

Modified: serf/trunk/serf_bucket_types.h
URL: 
http://svn.apache.org/viewvc/serf/trunk/serf_bucket_types.h?rev=1709441&r1=1709440&r2=1709441&view=diff
==============================================================================
--- serf/trunk/serf_bucket_types.h (original)
+++ serf/trunk/serf_bucket_types.h Mon Oct 19 16:16:29 2015
@@ -790,6 +790,79 @@ serf_bucket_http2_unpad_create(serf_buck
 
 /* ==================================================================== */
 
+extern const serf_bucket_type_t serf_bucket_type_hpack;
+#define SERF_BUCKET_IS_HPACK(b) SERF_BUCKET_CHECK((b), hpack)
+
+typedef struct serf_hpack_table_t serf_hpack_table_t;
+
+serf_bucket_t *
+serf_bucket_hpack_create(serf_hpack_table_t *hpack_table,
+                         serf_bucket_alloc_t *allocator);
+
+/**
+ * Set, copies: header and value copied.
+ *
+ * Copy the specified @a header and @a value into the bucket, using space
+ * from this bucket's allocator.
+ */
+void serf_bucket_hpack_setc(serf_bucket_t *hpack_bucket,
+                            const char *key,
+                            const char *value);
+
+/**
+ * Set, extended: fine grained copy control of key and value.
+ *
+ * Set the specified @a key, with length @a key_size with the
+ * @a value, and length @a value_size, into the bucket. The header will
+ * be copied if @a header_copy is set, and the value is copied if
+ * @a value_copy is set. If the values are not copied, then they should
+ * remain in scope at least as long as the bucket.
+ *
+ * If @a headers_bucket already contains a header with the same name
+ * as @a header, then append @a value to the existing value,
+ * separating with a comma (as per RFC 2616, section 4.2).  In this
+ * case, the new value must be allocated and the header re-used, so
+ * behave as if @a value_copy were true and @a header_copy false.
+ */
+void serf_bucket_hpack_setx(serf_bucket_t *hpack_bucket,
+                            const char *key,
+                            apr_size_t key_size,
+                            int header_copy,
+                            const char *value,
+                            apr_size_t value_size,
+                            int value_copy);
+
+const char *serf_bucket_hpack_get(serf_bucket_t *hpack_bucket,
+                                  const char *key,
+                                  apr_size_t hey_len);
+
+/**
+ * @param baton opaque baton as passed to @see serf_bucket_hpack_do
+ * @param key The header key from this iteration through the table
+ * @param value The header value from this iteration through the table
+ */
+typedef int (serf_bucket_hpack_do_callback_fn_t)(void *baton,
+                                                 const char *key,
+                                                 apr_size_t keylen,
+                                                 const char *value,
+                                                 apr_size_t value_len);
+
+/**
+ * Iterates over all headers of the message and invokes the callback 
+ * function with header key and value. Stop iterating when no more
+ * headers are available or when the callback function returned a 
+ * non-0 value.
+ *
+ * @param headers_bucket headers to iterate over
+ * @param func callback routine to invoke for every header in the bucket
+ * @param baton baton to pass on each invocation to func
+ */
+void serf_bucket_hpack_do(serf_bucket_t *hpack_bucket,
+                          serf_bucket_hpack_do_callback_fn_t func,
+                          void *baton);
+
+/* ==================================================================== */
+
 /* ### do we need a PIPE bucket type? they are simple apr_file_t objects */
 
 


Reply via email to