亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? poolbuf.c

?? jboss與apache集成的中間件,詳情請參看文檔說明.
?? C
字號:
/* *  Copyright 1999-2004 The Apache Software Foundation * *  Licensed under the Apache License, Version 2.0 (the "License"); *  you may not use this file except in compliance with the License. *  You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * *  Unless required by applicable law or agreed to in writing, software *  distributed under the License is distributed on an "AS IS" BASIS, *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *  See the License for the specific language governing permissions and *  limitations under the License. *//*************************************************************************** * Description: ISAPI plugin for Tomcat                                    * * Author:      Andy Armstrong <andy@tagish.com>                           * * Version:     $Revision: 1.4 $                                           * ***************************************************************************/#include "poolbuf.h"/* Macro to return the address of the first byte in a poolbuf__chunk on * the understanding that the buffer follows the structure in memory. */#define poolbuf__buf(chnk) \	((char *) ((poolbuf__chunk *) chnk + 1))void poolbuf_init(poolbuf * pb, jk_pool_t *p){    pb->p = p;    pb->head = pb->current = NULL;    pb->readPos = pb->writePos = 0;    pb->avail = 0;    pb->state = WRITE;}/* Write bytes to the buffer returning the number of bytes successfully * written. Can't be called again once poolbuf_read() has been called. */size_t poolbuf_write(poolbuf * pb, const void *buf, size_t size){    const char *cbuf = (const char *)buf;    size_t left = size;    if (READ == pb->state)        return 0;    /* first work out what we can write into the current buffer */    if (pb->current != NULL && pb->writePos < pb->current->size) {        char *chbuf = poolbuf__buf(pb->current) + pb->writePos;        size_t sz = pb->current->size - pb->writePos;        if (sz > left)            sz = left;        memcpy(chbuf, cbuf, sz);        pb->writePos += sz;        pb->avail += sz;        cbuf += sz;        left -= sz;    }    /* something left that we couldn't fit in the last chunk */    if (left > 0) {        poolbuf__chunk *chnk;        size_t sz = size;        if (sz < poolbuf__MINCHUNK)            sz = poolbuf__MINCHUNK;        if (NULL == pb->p            || NULL == (chnk =                        jk_pool_alloc(pb->p, sz + sizeof(poolbuf__chunk))))            return size - left;        chnk->next = NULL;        chnk->size = sz;        if (NULL == pb->head)            pb->head = chnk;        if (NULL != pb->current)            pb->current->next = chnk;        pb->current = chnk;        memcpy(poolbuf__buf(chnk), cbuf, left);        pb->avail += left;        pb->writePos = left;    }    return size;}/* Read bytes from the buffer returning the number of bytes read (which * will be less than desired when the end of the buffer is reached). Once * poolbuf_read() has been called poolbuf_write() may not be called again. */size_t poolbuf_read(poolbuf * pb, void *buf, size_t size){    char *cbuf = (char *)buf;    size_t nread = 0;    if (WRITE == pb->state) {        /* Move to read mode. Once we've done this subsequent         * writes are not allowed.         */        pb->current = pb->head;        pb->readPos = 0;        pb->state = READ;    }    while (size > 0 && pb->avail > 0) {        size_t sz = pb->current->size - pb->readPos;        if (sz > pb->avail)            sz = pb->avail;        if (sz > size)            sz = size;        memcpy(cbuf, poolbuf__buf(pb->current) + pb->readPos, sz);        pb->readPos += sz;        if (pb->readPos == pb->current->size) {            pb->current = pb->current->next;            pb->readPos = 0;        }        pb->avail -= sz;        nread += sz;    }    return nread;}/* Find out how many bytes are available for reading. */size_t poolbuf_available(poolbuf * pb){    return pb->avail;}/* Destroy the buffer. This doesn't actually free any memory * because the jk_pool functions don't support freeing individual * chunks, but it does recycle the buffer for subsequent use. */void poolbuf_destroy(poolbuf * pb){    pb->p = NULL;    pb->head = pb->current = NULL;    pb->readPos = pb->writePos = 0;    pb->avail = 0;    pb->state = WRITE;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美绝品在线观看成人午夜影视| 激情综合一区二区三区| 久久蜜桃av一区二区天堂| 欧美精品三级在线观看| 色综合天天综合色综合av| 99re视频这里只有精品| 成人黄色小视频| 91在线视频播放地址| 91麻豆自制传媒国产之光| 92精品国产成人观看免费 | 欧美日韩精品系列| 欧美视频一区二区三区在线观看 | 久久久精品2019中文字幕之3| 91精品国产91综合久久蜜臀| 日韩一级片网址| 久久亚区不卡日本| 国产精品拍天天在线| 亚洲免费色视频| 亚洲地区一二三色| 激情五月婷婷综合网| 大胆欧美人体老妇| 欧美在线短视频| 日韩欧美一区二区视频| 欧美国产日韩在线观看| 亚洲日本在线a| 免费欧美在线视频| 成人黄色软件下载| 91麻豆精品国产91久久久久久久久 | 秋霞影院一区二区| 风间由美性色一区二区三区| 91国内精品野花午夜精品| 日韩一区二区免费高清| 国产精品欧美一区二区三区| 亚洲成人av福利| 国产呦精品一区二区三区网站| 97久久超碰精品国产| 欧美一区二区三区色| 中文字幕乱码久久午夜不卡| 亚洲高清免费在线| 国产成a人亚洲| 精品视频999| 欧美国产1区2区| 免费精品视频最新在线| 99精品国产99久久久久久白柏| 欧美一区二区视频观看视频 | 欧美亚洲一区三区| 久久精品人人做人人综合| 亚洲国产日韩a在线播放| 国产精品资源网站| 日韩一区二区视频| 一区二区三区在线免费观看| 国产精品一区二区在线观看不卡| 欧美色偷偷大香| 亚洲人成网站影音先锋播放| 国产精品一区二区黑丝| 欧美一区二区在线视频| 亚洲最大的成人av| av资源网一区| 国产女人18毛片水真多成人如厕| 日本欧美加勒比视频| 欧美日韩在线精品一区二区三区激情 | 日韩vs国产vs欧美| 欧美群妇大交群中文字幕| 国产免费观看久久| 国产一区二区三区香蕉| 欧美大片日本大片免费观看| 亚洲成人免费影院| 欧美中文字幕不卡| 亚洲精品乱码久久久久| 国产成人自拍网| 国产日产欧美一区| 国产精品 欧美精品| 2023国产精品视频| 国产真实精品久久二三区| 欧美成va人片在线观看| 日韩av一级片| 精品美女一区二区| 久久99精品国产91久久来源| 精品国精品国产| 国产综合色在线| 久久久综合网站| 国产乱人伦精品一区二区在线观看 | 91麻豆精品国产91久久久久久 | 国产亚洲一区字幕| 国产高清一区日本| 国产精品污网站| 一本大道av一区二区在线播放 | 蜜桃传媒麻豆第一区在线观看| 欧美另类一区二区三区| 免费观看一级特黄欧美大片| 欧美成人aa大片| 白白色 亚洲乱淫| 悠悠色在线精品| 5月丁香婷婷综合| 久久99久久99小草精品免视看| 久久久噜噜噜久久人人看 | 在线精品视频小说1| 日韩精品成人一区二区在线| 精品国产制服丝袜高跟| 成人一区二区三区| 亚洲一级电影视频| 精品福利av导航| 99久免费精品视频在线观看 | 91精品国产色综合久久ai换脸 | 91精品国产欧美一区二区18| 久草精品在线观看| 国产精品久久二区二区| 欧美日韩精品一区视频| 国产精品夜夜嗨| 亚洲一二三专区| 久久久精品黄色| 欧美日韩国产综合一区二区三区 | 成人激情免费电影网址| 午夜欧美视频在线观看| 国产亚洲欧美色| 欧美日韩日本视频| 国产成人一区在线| 日韩成人免费电影| 国产精品久久影院| 日韩无一区二区| 91黄视频在线| 高清国产一区二区| 免费观看成人av| 亚洲一区在线观看视频| 国产网站一区二区| 91精品国产综合久久久久| 91免费版在线| 国产成人啪午夜精品网站男同| 日精品一区二区三区| 中文字幕亚洲在| 久久精品人人做人人综合 | 91在线免费看| 国产又黄又大久久| 日韩 欧美一区二区三区| 亚洲精品国产高清久久伦理二区| 国产视频一区在线播放| 日韩免费福利电影在线观看| 欧美日韩免费电影| 欧洲一区二区三区免费视频| 99精品久久只有精品| 99久久综合色| 成人一区在线看| 国产成人久久精品77777最新版本| 日日摸夜夜添夜夜添亚洲女人| 亚洲综合丝袜美腿| 亚洲欧美国产毛片在线| 亚洲丝袜另类动漫二区| 国产精品福利影院| 国产精品二三区| 国产精品色一区二区三区| 国产精品视频免费看| 国产日产欧美精品一区二区三区| 久久影院视频免费| 欧美精品一区二区三| 精品国产乱子伦一区| 久久夜色精品国产噜噜av | 成人午夜精品在线| 高清成人在线观看| 99视频精品全部免费在线| 91片在线免费观看| 欧美在线短视频| 欧美精品在线一区二区| 6080yy午夜一二三区久久| 日韩欧美国产三级电影视频| 日韩精品一区二区三区视频| 2022国产精品视频| 国产精品免费观看视频| 国产精品久久久久久亚洲伦| 中文字幕中文字幕一区二区| 亚洲精品午夜久久久| 亚洲v日本v欧美v久久精品| 免费高清在线一区| 国产999精品久久| 色综合天天综合在线视频| 欧美午夜宅男影院| 91精品国产色综合久久不卡蜜臀 | www.色综合.com| 日本乱码高清不卡字幕| 欧美另类z0zxhd电影| 2020国产精品久久精品美国| 国产亚洲短视频| 亚洲一区二区三区视频在线 | 一区二区高清在线| 麻豆久久久久久久| caoporm超碰国产精品| 在线播放日韩导航| 中文字幕精品综合| 三级欧美在线一区| 成人的网站免费观看| 欧美一区二区三区四区久久| 欧美激情资源网| 日本不卡一区二区三区| 不卡的av电影| 6080国产精品一区二区| 最新高清无码专区| 精品一区二区三区香蕉蜜桃| 91麻豆文化传媒在线观看| 久久免费看少妇高潮| 天堂蜜桃91精品| 色狠狠桃花综合|