| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 1bb394e commit 0f2fcaf
121 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -31,7 +31,7 @@ | |||
| 31 | 31 | * | |
| 32 | 32 | * Version number of the nghttp3 library release. | |
| 33 | 33 | */ | |
| 34 | - #define NGHTTP3_VERSION "0.1.0-DEV" | ||
| 34 | + #define NGHTTP3_VERSION "0.7.0" | ||
| 35 | 35 | ||
| 36 | 36 | /** | |
| 37 | 37 | * @macro | |
@@ -41,6 +41,6 @@ | |||
| 41 | 41 | * number, 8 bits for minor and 8 bits for patch. Version 1.2.3 | |
| 42 | 42 | * becomes 0x010203. | |
| 43 | 43 | */ | |
| 44 | - #define NGHTTP3_VERSION_NUM 0x000100 | ||
| 44 | + #define NGHTTP3_VERSION_NUM 0x000700 | ||
| 45 | 45 | ||
| 46 | 46 | #endif /* NGHTTP3_VERSION_H */ | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,91 @@ | |||
| 1 | + /* | ||
| 2 | + * nghttp3 | ||
| 3 | + * | ||
| 4 | + * Copyright (c) 2022 nghttp3 contributors | ||
| 5 | + * Copyright (c) 2022 ngtcp2 contributors | ||
| 6 | + * | ||
| 7 | + * Permission is hereby granted, free of charge, to any person obtaining | ||
| 8 | + * a copy of this software and associated documentation files (the | ||
| 9 | + * "Software"), to deal in the Software without restriction, including | ||
| 10 | + * without limitation the rights to use, copy, modify, merge, publish, | ||
| 11 | + * distribute, sublicense, and/or sell copies of the Software, and to | ||
| 12 | + * permit persons to whom the Software is furnished to do so, subject to | ||
| 13 | + * the following conditions: | ||
| 14 | + * | ||
| 15 | + * The above copyright notice and this permission notice shall be | ||
| 16 | + * included in all copies or substantial portions of the Software. | ||
| 17 | + * | ||
| 18 | + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
| 19 | + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
| 20 | + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
| 21 | + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||
| 22 | + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||
| 23 | + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||
| 24 | + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 25 | + */ | ||
| 26 | + #include "nghttp3_balloc.h" | ||
| 27 | + | ||
| 28 | + #include <assert.h> | ||
| 29 | + | ||
| 30 | + #include "nghttp3_mem.h" | ||
| 31 | + | ||
| 32 | + void nghttp3_balloc_init(nghttp3_balloc *balloc, size_t blklen, | ||
| 33 | + const nghttp3_mem *mem) { | ||
| 34 | + assert((blklen & 0xfu) == 0); | ||
| 35 | + | ||
| 36 | + balloc->mem = mem; | ||
| 37 | + balloc->blklen = blklen; | ||
| 38 | + balloc->head = NULL; | ||
| 39 | + nghttp3_buf_wrap_init(&balloc->buf, (void *)"", 0); | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + void nghttp3_balloc_free(nghttp3_balloc *balloc) { | ||
| 43 | + if (balloc == NULL) { | ||
| 44 | + return; | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + nghttp3_balloc_clear(balloc); | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + void nghttp3_balloc_clear(nghttp3_balloc *balloc) { | ||
| 51 | + nghttp3_memblock_hd *p, *next; | ||
| 52 | + | ||
| 53 | + for (p = balloc->head; p; p = next) { | ||
| 54 | + next = p->next; | ||
| 55 | + nghttp3_mem_free(balloc->mem, p); | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + balloc->head = NULL; | ||
| 59 | + nghttp3_buf_wrap_init(&balloc->buf, (void *)"", 0); | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + int nghttp3_balloc_get(nghttp3_balloc *balloc, void **pbuf, size_t n) { | ||
| 63 | + uint8_t *p; | ||
| 64 | + nghttp3_memblock_hd *hd; | ||
| 65 | + | ||
| 66 | + assert(n <= balloc->blklen); | ||
| 67 | + | ||
| 68 | + if (nghttp3_buf_left(&balloc->buf) < n) { | ||
| 69 | + p = nghttp3_mem_malloc(balloc->mem, sizeof(nghttp3_memblock_hd) + 0x10u + | ||
| 70 | + balloc->blklen); | ||
| 71 | + if (p == NULL) { | ||
| 72 | + return NGHTTP3_ERR_NOMEM; | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + hd = (nghttp3_memblock_hd *)(void *)p; | ||
| 76 | + hd->next = balloc->head; | ||
| 77 | + balloc->head = hd; | ||
| 78 | + nghttp3_buf_wrap_init( | ||
| 79 | + &balloc->buf, | ||
| 80 | + (uint8_t *)(((uintptr_t)p + sizeof(nghttp3_memblock_hd) + 0xfu) & | ||
| 81 | + ~(uintptr_t)0xfu), | ||
| 82 | + balloc->blklen); | ||
| 83 | + } | ||
| 84 | + | ||
| 85 | + assert(((uintptr_t)balloc->buf.last & 0xfu) == 0); | ||
| 86 | + | ||
| 87 | + *pbuf = balloc->buf.last; | ||
| 88 | + balloc->buf.last += (n + 0xfu) & ~(uintptr_t)0xfu; | ||
| 89 | + | ||
| 90 | + return 0; | ||
| 91 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,92 @@ | |||
| 1 | + /* | ||
| 2 | + * nghttp3 | ||
| 3 | + * | ||
| 4 | + * Copyright (c) 2022 nghttp3 contributors | ||
| 5 | + * Copyright (c) 2022 ngtcp2 contributors | ||
| 6 | + * | ||
| 7 | + * Permission is hereby granted, free of charge, to any person obtaining | ||
| 8 | + * a copy of this software and associated documentation files (the | ||
| 9 | + * "Software"), to deal in the Software without restriction, including | ||
| 10 | + * without limitation the rights to use, copy, modify, merge, publish, | ||
| 11 | + * distribute, sublicense, and/or sell copies of the Software, and to | ||
| 12 | + * permit persons to whom the Software is furnished to do so, subject to | ||
| 13 | + * the following conditions: | ||
| 14 | + * | ||
| 15 | + * The above copyright notice and this permission notice shall be | ||
| 16 | + * included in all copies or substantial portions of the Software. | ||
| 17 | + * | ||
| 18 | + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
| 19 | + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
| 20 | + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
| 21 | + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||
| 22 | + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||
| 23 | + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||
| 24 | + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 25 | + */ | ||
| 26 | + #ifndef NGHTTP3_BALLOC_H | ||
| 27 | + #define NGHTTP3_BALLOC_H | ||
| 28 | + | ||
| 29 | + #ifdef HAVE_CONFIG_H | ||
| 30 | + # include <config.h> | ||
| 31 | + #endif /* HAVE_CONFIG_H */ | ||
| 32 | + | ||
| 33 | + #include <nghttp3/nghttp3.h> | ||
| 34 | + | ||
| 35 | + #include "nghttp3_buf.h" | ||
| 36 | + | ||
| 37 | + typedef struct nghttp3_memblock_hd nghttp3_memblock_hd; | ||
| 38 | + | ||
| 39 | + /* | ||
| 40 | + * nghttp3_memblock_hd is the header of memory block. | ||
| 41 | + */ | ||
| 42 | + struct nghttp3_memblock_hd { | ||
| 43 | + nghttp3_memblock_hd *next; | ||
| 44 | + }; | ||
| 45 | + | ||
| 46 | + /* | ||
| 47 | + * nghttp3_balloc is a custom memory allocator. It allocates |blklen| | ||
| 48 | + * bytes of memory at once on demand, and returns its slice when the | ||
| 49 | + * allocation is requested. | ||
| 50 | + */ | ||
| 51 | + typedef struct nghttp3_balloc { | ||
| 52 | + /* mem is the underlying memory allocator. */ | ||
| 53 | + const nghttp3_mem *mem; | ||
| 54 | + /* blklen is the size of memory block. */ | ||
| 55 | + size_t blklen; | ||
| 56 | + /* head points to the list of memory block allocated so far. */ | ||
| 57 | + nghttp3_memblock_hd *head; | ||
| 58 | + /* buf wraps the current memory block for allocation requests. */ | ||
| 59 | + nghttp3_buf buf; | ||
| 60 | + } nghttp3_balloc; | ||
| 61 | + | ||
| 62 | + /* | ||
| 63 | + * nghttp3_balloc_init initializes |balloc| with |blklen| which is the | ||
| 64 | + * size of memory block. | ||
| 65 | + */ | ||
| 66 | + void nghttp3_balloc_init(nghttp3_balloc *balloc, size_t blklen, | ||
| 67 | + const nghttp3_mem *mem); | ||
| 68 | + | ||
| 69 | + /* | ||
| 70 | + * nghttp3_balloc_free releases all allocated memory blocks. | ||
| 71 | + */ | ||
| 72 | + void nghttp3_balloc_free(nghttp3_balloc *balloc); | ||
| 73 | + | ||
| 74 | + /* | ||
| 75 | + * nghttp3_balloc_get allocates |n| bytes of memory and assigns its | ||
| 76 | + * pointer to |*pbuf|. | ||
| 77 | + * | ||
| 78 | + * It returns 0 if it succeeds, or one of the following negative error | ||
| 79 | + * codes: | ||
| 80 | + * | ||
| 81 | + * NGHTTP3_ERR_NOMEM | ||
| 82 | + * Out of memory. | ||
| 83 | + */ | ||
| 84 | + int nghttp3_balloc_get(nghttp3_balloc *balloc, void **pbuf, size_t n); | ||
| 85 | + | ||
| 86 | + /* | ||
| 87 | + * nghttp3_balloc_clear releases all allocated memory blocks and | ||
| 88 | + * initializes its state. | ||
| 89 | + */ | ||
| 90 | + void nghttp3_balloc_clear(nghttp3_balloc *balloc); | ||
| 91 | + | ||
| 92 | + #endif /* NGHTTP3_BALLOC_H */ | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments