您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ APR_STATUS_IS_EOF函数代码示例

51自学网 2021-06-01 19:35:46
  C++
这篇教程C++ APR_STATUS_IS_EOF函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中APR_STATUS_IS_EOF函数的典型用法代码示例。如果您正苦于以下问题:C++ APR_STATUS_IS_EOF函数的具体用法?C++ APR_STATUS_IS_EOF怎么用?C++ APR_STATUS_IS_EOF使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了APR_STATUS_IS_EOF函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: bif_read0_2

term_t bif_read0_2(term_t Port, term_t Len, process_t *ctx){	apr_status_t rs;	apr_size_t size;	apr_byte_t *buf;	term_t bin;	port_t *p;	if (!is_port(Port) || !is_int(Len))		return A_BADARG;	p = port_lookup(prp_serial(Port));	if (p == 0)		return A_BADARG;	size = (apr_size_t)int_value(Len);	buf = xalloc(proc_gc_pool(ctx), size);	rs = p->read(p, buf, &size);	if (size == 0 && APR_STATUS_IS_EOF(rs))		result(A_EOF);	else if (size == 0 && rs != 0)		return decipher_status(rs);	else	{		bin = make_binary(intnum(size), buf, proc_gc_pool(ctx));		result(bin);	}	return AI_OK;}
开发者ID:aidanhs,项目名称:teeterl,代码行数:26,


示例2: read_pipe

// Called by parent process.static std::string read_pipe(apr_file_t* in, bool timeout_ok = false){	char buf[256];	unsigned char bytes_to_read;	apr_size_t bytes_read;	apr_status_t status = apr_file_read_full(in, &bytes_to_read, 1, &bytes_read);	if (status != APR_SUCCESS)	{		if (APR_STATUS_IS_TIMEUP(status) && timeout_ok)		{			return "TIMEOUT";		}		llwarns << "apr_file_read_full: " << apr_strerror(status, buf, sizeof(buf)) << llendl;		assert(APR_STATUS_IS_EOF(status));		return "END OF FILE";	}	assert(bytes_read == 1);	status = apr_file_read_full(in, buf, bytes_to_read, &bytes_read);	if (status != APR_SUCCESS)	{		llwarns << "apr_file_read_full: " << apr_strerror(status, buf, sizeof(buf)) << llendl;		assert(status == APR_SUCCESS);	// Fail	}	assert(bytes_read == bytes_to_read);	std::string received(buf, bytes_read);	llinfos << "Received: /"" << received << "/" (bytes read: " << bytes_read << ")" << llendl;	return received;}
开发者ID:1234-,项目名称:SingularityViewer,代码行数:30,


示例3: h2_conn_run

apr_status_t h2_conn_run(struct h2_ctx *ctx, conn_rec *c){    apr_status_t status;    int mpm_state = 0;        do {        if (c->cs) {            c->cs->sense = CONN_SENSE_DEFAULT;        }        status = h2_session_process(h2_ctx_session_get(ctx), async_mpm);                if (c->cs) {            c->cs->state = CONN_STATE_WRITE_COMPLETION;        }        if (APR_STATUS_IS_EOF(status)) {            ap_log_cerror(APLOG_MARK, APLOG_DEBUG, status, c,                          "h2_session(%ld): process, closing conn", c->id);            c->keepalive = AP_CONN_CLOSE;        }        else {            c->keepalive = AP_CONN_KEEPALIVE;        }                if (ap_mpm_query(AP_MPMQ_MPM_STATE, &mpm_state)) {            break;        }    } while (!async_mpm             && c->keepalive == AP_CONN_KEEPALIVE              && mpm_state != AP_MPMQ_STOPPING);        return DONE;}
开发者ID:Sp1l,项目名称:mod_h2,代码行数:32,


示例4: common_databuf_prep

/* Ensure the buffer is prepared for reading. Will return APR_SUCCESS, * APR_EOF, or some failure code. *len is only set for EOF. */static apr_status_t common_databuf_prep(serf_databuf_t *databuf,                                        apr_size_t *len){    apr_size_t readlen;    apr_status_t status;    /* if there is data in the buffer, then we're happy. */    if (databuf->remaining > 0)        return APR_SUCCESS;    /* if we already hit EOF, then keep returning that. */    if (APR_STATUS_IS_EOF(databuf->status)) {        /* *data = NULL;   ?? */        *len = 0;        return APR_EOF;    }    /* refill the buffer */    status = (*databuf->read)(databuf->read_baton, sizeof(databuf->buf),                              databuf->buf, &readlen);    if (SERF_BUCKET_READ_ERROR(status)) {        return status;    }    databuf->current = databuf->buf;    databuf->remaining = readlen;    databuf->status = status;    return APR_SUCCESS;}
开发者ID:KyleSanderson,项目名称:serf,代码行数:32,


示例5: serf_chunk_read_iovec

static apr_status_t serf_chunk_read_iovec(serf_bucket_t *bucket,                                          apr_size_t requested,                                          int vecs_size,                                          struct iovec *vecs,                                          int *vecs_used){    chunk_context_t *ctx = bucket->data;    apr_status_t status;    /* Before proceeding, we need to fetch some data from the stream. */    if (ctx->state == STATE_FETCH) {        status = create_chunk(bucket);        if (status) {            return status;        }    }    status = serf_bucket_read_iovec(ctx->chunk, requested, vecs_size, vecs,                                    vecs_used);    /* Mask EOF from aggregate bucket. */    if (APR_STATUS_IS_EOF(status) && ctx->state == STATE_CHUNK) {        status = ctx->last_status;        ctx->state = STATE_FETCH;    }    return status;}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:28,


示例6: talkTalk

static apr_status_t talkTalk(apr_socket_t *socket, apr_pool_t *parent){    apr_pool_t *pool;    apr_size_t len;    char *buf;    apr_status_t rv;    if (apr_pool_create(&pool, parent) != APR_SUCCESS)        return APR_ENOPOOL;    buf = apr_palloc(pool, BUF_SIZE);    if (!buf)        return ENOMEM;    do {        len = BUF_SIZE;        rv = apr_socket_recv(socket, buf, &len);        if (APR_STATUS_IS_EOF(rv) || len == 0 || rv != APR_SUCCESS)            break;        rv = apr_socket_send(socket, buf, &len);        if (len == 0 || rv != APR_SUCCESS)            break;    } while (rv == APR_SUCCESS);    apr_pool_clear(pool);    return APR_SUCCESS;}
开发者ID:Alivx,项目名称:apache2nginx,代码行数:28,


示例7: sock_read_cb

/* Implements svn_read_fn_t */static svn_error_t *sock_read_cb(void *baton, char *buffer, apr_size_t *len){  sock_baton_t *b = baton;  apr_status_t status;  apr_interval_time_t interval;  status = apr_socket_timeout_get(b->sock, &interval);  if (status)    return svn_error_wrap_apr(status, _("Can't get socket timeout"));  /* Always block on read.   * During pipelining, we set the timeout to 0 for some write   * operations so that we can try them without blocking. If APR had   * separate timeouts for read and write, we would only set the   * write timeout, but it doesn't. So here, we revert back to blocking.   */  apr_socket_timeout_set(b->sock, -1);  status = apr_socket_recv(b->sock, buffer, len);  apr_socket_timeout_set(b->sock, interval);  if (status && !APR_STATUS_IS_EOF(status))    return svn_error_wrap_apr(status, _("Can't read from connection"));  if (*len == 0)    return svn_error_create(SVN_ERR_RA_SVN_CONNECTION_CLOSED, NULL, NULL);  return SVN_NO_ERROR;}
开发者ID:Alkzndr,项目名称:freebsd,代码行数:28,


示例8: serf_chunk_read

static apr_status_t serf_chunk_read(serf_bucket_t *bucket,                                    apr_size_t requested,                                    const char **data, apr_size_t *len){    chunk_context_t *ctx = bucket->data;    apr_status_t status;    /* Before proceeding, we need to fetch some data from the stream. */    if (ctx->state == STATE_FETCH) {        status = create_chunk(bucket);        if (status) {            return status;        }    }    status = serf_bucket_read(ctx->chunk, requested, data, len);    /* Mask EOF from aggregate bucket. */    if (APR_STATUS_IS_EOF(status) && ctx->state == STATE_CHUNK) {        status = ctx->last_status;        ctx->state = STATE_FETCH;    }    return status;}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:25,


示例9: read_complete_body

static apr_status_tread_complete_body(request_rec *r, apr_bucket_brigade *kept_body){    apr_bucket_brigade *tmp_bb;    apr_bucket *t_bucket1, *t_bucket2;    unsigned short eos_seen = 0;    apr_status_t status;    tmp_bb = apr_brigade_create(r->pool, r->connection->bucket_alloc);    while (!eos_seen) {        status = ap_get_brigade(                        r->input_filters,                        tmp_bb,                        AP_MODE_READBYTES,                        APR_BLOCK_READ,                        HUGE_STRING_LEN);        /* This means the filter discovered an error.         * Furthermore input-filter already handeld the error and sends         * something to the output chain.         * For example ap_http_filter does this if LimitRequestBody is reached         */        if (status == AP_FILTER_ERROR) {            apr_brigade_destroy(tmp_bb);            return AP_FILTER_ERROR;        }        /* Cool no need to search for the eos bucket */        if (APR_STATUS_IS_EOF(status)) {            apr_brigade_destroy(tmp_bb);            return APR_SUCCESS;        }        if (status != APR_SUCCESS) {            apr_brigade_destroy(tmp_bb);            return status;        }        ITER_BRIGADE(t_bucket1, tmp_bb) {            apr_bucket_copy(t_bucket1, &t_bucket2);            /* If SSL is used TRANSIENT buckets are returned.             * However we need this bucket for a longer period than             * this function call, hence 'setaside' the bucket.             */            if APR_BUCKET_IS_TRANSIENT(t_bucket2) {                apr_bucket_setaside(t_bucket2, r->pool);            }            APR_BRIGADE_INSERT_TAIL(kept_body, t_bucket2);            if (!eos_seen && APR_BUCKET_IS_EOS(t_bucket1)) {                eos_seen = 1;            }        }        apr_brigade_cleanup(tmp_bb);    }
开发者ID:stephan-hof,项目名称:mod_dechunk,代码行数:59,


示例10: im_exec_fill_buffer

static void im_exec_fill_buffer(nx_module_input_t *input){    apr_status_t rv;    apr_size_t len;    ASSERT(input != NULL);    ASSERT(input->buf != NULL);    ASSERT(input->module != NULL);    ASSERT(input->desc_type == APR_POLL_FILE);    ASSERT(input->desc.f != NULL);    if ( input->bufstart == input->bufsize )    {	input->bufstart = 0;	input->buflen = 0;    }    if ( input->buflen == 0 )    {	input->bufstart = 0;    }    ASSERT(input->bufstart + input->buflen <= input->bufsize);    len = (apr_size_t) (input->bufsize - (input->buflen + input->bufstart));    rv = apr_file_read(input->desc.f, input->buf + input->bufstart + input->buflen, &len);    if ( rv != APR_SUCCESS )    {	if ( APR_STATUS_IS_EOF(rv) )	{	    throw_msg("Module %s got EOF, process exited? ", input->module->name);	}	else if ( APR_STATUS_IS_EAGAIN(rv) )	{ #ifdef WIN32	    // on windows EAGAIN is normal because we are using NON-BLOCKING reads	    // so we try again after 500 ms	    im_exec_add_read_event(input->module, 500);	    log_debug("got EAGAIN");#else	    log_error("got EAGAIN for blocking read in module %s", input->module->name);#endif	    ASSERT(len == 0);	    return;	}	else	{	    throw(rv, "Module %s couldn't read from pipe", input->module->name);	}    }    else    {	log_debug("im_exec read %d bytes", (int) len);    }    input->buflen += (int) len;    ASSERT(input->buflen <= input->bufsize);}
开发者ID:onlyone0001,项目名称:pkg-nxlog-ce,代码行数:57,


示例11: fortune_process

static apr_status_t fortune_process(conn_rec *c,                                    apr_procattr_t *pattr,                                    apr_bucket_brigade *bb){    apr_status_t rv;    int argc = 0;    const char *argv[APP_MAX_ARGC];    apr_proc_t proc;    apr_bucket *b;    apr_pool_t *p = c->pool;    fortune_conf_t *fconf = ap_get_module_config(c->base_server->module_config,						 &fortune_module);    argv[argc++] = fconf->progname;    argv[argc++] = NULL;	/* @argvs should be null-terminated */    if ((rv = apr_proc_create(&proc, fconf->progname,                              (const char *const *) argv,                              NULL, (apr_procattr_t *) pattr,                              p)) != APR_SUCCESS) {        return rv;    }    while (TRUE) {        char buf[BUFSIZE] = { 0, };        /* read the command's output through the pipe */        rv = apr_file_gets(buf, sizeof(buf), proc.out);        if (APR_STATUS_IS_EOF(rv)) {            break;        }        b = apr_bucket_pool_create(apr_pstrdup(p, buf),                                   strlen(buf), p, c->bucket_alloc);        APR_BRIGADE_INSERT_TAIL(bb, b);    }    apr_file_close(proc.out);    {        int st;        apr_exit_why_e why;        rv = apr_proc_wait(&proc, &st, &why, APR_WAIT);        if (APR_STATUS_IS_CHILD_DONE(rv)) {            ap_log_cerror(APLOG_MARK, APLOG_INFO, 0, c,                          "child done: why = %d, exit status = %d", why, st);        }        else {            ap_log_cerror(APLOG_MARK, APLOG_INFO, 0, c, "child notdone");            return APR_EGENERAL;        }    }    return APR_SUCCESS;}
开发者ID:sjnam,项目名称:mod-fortune,代码行数:55,


示例12: file_read_cb

/* Implements svn_read_fn_t */static svn_error_t *file_read_cb(void *baton, char *buffer, apr_size_t *len){  file_baton_t *b = baton;  apr_status_t status = apr_file_read(b->in_file, buffer, len);  if (status && !APR_STATUS_IS_EOF(status))    return svn_error_wrap_apr(status, _("Can't read from connection"));  if (*len == 0)    return svn_error_create(SVN_ERR_RA_SVN_CONNECTION_CLOSED, NULL, NULL);  return SVN_NO_ERROR;}
开发者ID:Alkzndr,项目名称:freebsd,代码行数:13,


示例13: h2_session_status_from_apr_status

static int h2_session_status_from_apr_status(apr_status_t rv){    if (rv == APR_SUCCESS) {        return NGHTTP2_NO_ERROR;    }    else if (APR_STATUS_IS_EAGAIN(rv)) {        return NGHTTP2_ERR_WOULDBLOCK;    }    else if (APR_STATUS_IS_EOF(rv)) {            return NGHTTP2_ERR_EOF;    }    return NGHTTP2_ERR_PROTO;}
开发者ID:NeedfulThings,项目名称:mod_h2,代码行数:13,


示例14: h2_conn_run

apr_status_t h2_conn_run(conn_rec *c){    apr_status_t status;    int mpm_state = 0;    h2_session *session = h2_ctx_get_session(c);        ap_assert(session);    do {        if (c->cs) {            c->cs->sense = CONN_SENSE_DEFAULT;            c->cs->state = CONN_STATE_HANDLER;        }            status = h2_session_process(session, async_mpm);                if (APR_STATUS_IS_EOF(status)) {            ap_log_cerror(APLOG_MARK, APLOG_DEBUG, status, c,                           H2_SSSN_LOG(APLOGNO(03045), session,                           "process, closing conn"));            c->keepalive = AP_CONN_CLOSE;        }        else {            c->keepalive = AP_CONN_KEEPALIVE;        }                if (ap_mpm_query(AP_MPMQ_MPM_STATE, &mpm_state)) {            break;        }    } while (!async_mpm             && c->keepalive == AP_CONN_KEEPALIVE              && mpm_state != AP_MPMQ_STOPPING);    if (c->cs) {        switch (session->state) {            case H2_SESSION_ST_INIT:            case H2_SESSION_ST_IDLE:            case H2_SESSION_ST_BUSY:            case H2_SESSION_ST_WAIT:                c->cs->state = CONN_STATE_WRITE_COMPLETION;                break;            case H2_SESSION_ST_CLEANUP:            case H2_SESSION_ST_DONE:            default:                c->cs->state = CONN_STATE_LINGER;            break;        }    }    return APR_SUCCESS;}
开发者ID:covener,项目名称:mod_h2,代码行数:50,


示例15: proxy_wstunnel_transfer

static int proxy_wstunnel_transfer(request_rec *r, conn_rec *c_i, conn_rec *c_o,                                     apr_bucket_brigade *bb, char *name){    int rv;#ifdef DEBUGGING    apr_off_t len;#endif    do {        apr_brigade_cleanup(bb);        rv = ap_get_brigade(c_i->input_filters, bb, AP_MODE_READBYTES,                            APR_NONBLOCK_READ, AP_IOBUFSIZE);        if (rv == APR_SUCCESS) {            if (c_o->aborted) {                return APR_EPIPE;            }            if (APR_BRIGADE_EMPTY(bb)) {                break;            }#ifdef DEBUGGING            len = -1;            apr_brigade_length(bb, 0, &len);            ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(02440)                          "read %" APR_OFF_T_FMT                          " bytes from %s", len, name);#endif            rv = ap_pass_brigade(c_o->output_filters, bb);            if (rv == APR_SUCCESS) {                ap_fflush(c_o->output_filters, bb);            }            else {                ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(02441)                              "error on %s - ap_pass_brigade",                              name);            }        } else if (!APR_STATUS_IS_EAGAIN(rv) && !APR_STATUS_IS_EOF(rv)) {            ap_log_rerror(APLOG_MARK, APLOG_DEBUG, rv, r, APLOGNO(02442)                          "error on %s - ap_get_brigade",                          name);        }    } while (rv == APR_SUCCESS);    ap_log_rerror(APLOG_MARK, APLOG_TRACE2, rv, r, "wstunnel_transfer complete");    if (APR_STATUS_IS_EAGAIN(rv)) {        rv = APR_SUCCESS;    }       return rv;}
开发者ID:Summyhaha,项目名称:Tomcat,代码行数:50,


示例16: serf_chunk_peek

static apr_status_t serf_chunk_peek(serf_bucket_t *bucket,                                     const char **data,                                     apr_size_t *len){    chunk_context_t *ctx = bucket->data;    apr_status_t status;    status = serf_bucket_peek(ctx->chunk, data, len);    /* Mask EOF from aggregate bucket. */    if (APR_STATUS_IS_EOF(status) && ctx->state == STATE_CHUNK) {        status = APR_EAGAIN;    }    return status;}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:16,


示例17: aikido_bucket_read

/* Read method of CGI bucket: polls on stderr and stdout of the child, * sending any stderr output immediately away to the error log. */static apr_status_t aikido_bucket_read(apr_bucket *b, const char **str,                                    apr_size_t *len, apr_read_type_e block){    struct aikido_bucket_data *data = b->data;    apr_interval_time_t timeout;    apr_status_t rv;    int gotdata = 0;    timeout = block == APR_NONBLOCK_READ ? 0 : data->r->server->timeout;    do {        const apr_pollfd_t *results;        apr_int32_t num;        rv = apr_pollset_poll(data->pollset, timeout, &num, &results);        if (APR_STATUS_IS_TIMEUP(rv)) {            if (timeout) {                ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, data->r,                               "Timeout waiting for output from CGI script %s",                              data->r->filename);                return rv;            }            else {                return APR_EAGAIN;            }        }        else if (APR_STATUS_IS_EINTR(rv)) {            continue;        }        else if (rv != APR_SUCCESS) {            ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, data->r,                           "poll failed waiting for CGI child");            return rv;        }        for (; num; num--, results++) {            rv = aikido_read_stdout(b, results[0].desc.f, str, len);            if (APR_STATUS_IS_EOF(rv)) {                rv = APR_SUCCESS;            }            gotdata = 1;        }    } while (!gotdata);    return rv;}
开发者ID:dallison,项目名称:aikido3,代码行数:49,


示例18: serf_chunk_readline

static apr_status_t serf_chunk_readline(serf_bucket_t *bucket,                                         int acceptable, int *found,                                         const char **data, apr_size_t *len){    chunk_context_t *ctx = bucket->data;    apr_status_t status;    status = serf_bucket_readline(ctx->chunk, acceptable, found, data, len);    /* Mask EOF from aggregate bucket. */    if (APR_STATUS_IS_EOF(status) && ctx->state == STATE_CHUNK) {        status = APR_EAGAIN;        ctx->state = STATE_FETCH;    }    return status;}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:17,


示例19: ra_neon_body_provider

static ssize_t ra_neon_body_provider(void *userdata,                                     char *buffer,                                     size_t buflen){  body_provider_baton_t *b = userdata;  svn_ra_neon__request_t *req = b->req;  apr_file_t *body_file = b->body_file;  if (req->sess->callbacks &&      req->sess->callbacks->cancel_func)    SVN_RA_NEON__REQ_ERR      (req, (req->sess->callbacks->cancel_func)(req->sess->callback_baton));  if (req->err)    return -1;  svn_pool_clear(req->iterpool);  if (buflen == 0)    {      /* This is the beginning of a new body pull. Rewind the file. */      apr_off_t offset = 0;      SVN_RA_NEON__REQ_ERR        (b->req,         svn_io_file_seek(body_file, APR_SET, &offset, req->iterpool));      return (req->err ? -1 : 0);    }  else    {      apr_size_t nbytes = buflen;      svn_error_t *err = svn_io_file_read(body_file, buffer, &nbytes,                                          req->iterpool);      if (err)        {          if (APR_STATUS_IS_EOF(err->apr_err))            {              svn_error_clear(err);              return 0;            }          SVN_RA_NEON__REQ_ERR(req, err);          return -1;        }      else        return nbytes;    }}
开发者ID:DJEX93,项目名称:dsploit,代码行数:46,


示例20: bio_bucket_read

/* Returns the amount read. */static int bio_bucket_read(BIO *bio, char *in, int inlen){    serf_ssl_context_t *ctx = bio->ptr;    const char *data;    apr_status_t status;    apr_size_t len;#ifdef SSL_VERBOSE    printf("bio_bucket_read called for %d bytes/n", inlen);#endif    if (ctx->encrypt.status == SERF_ERROR_WAIT_CONN        && BIO_should_read(ctx->bio)) {#ifdef SSL_VERBOSE        printf("bio_bucket_read waiting: (%d %d %d)/n",           BIO_should_retry(ctx->bio), BIO_should_read(ctx->bio),           BIO_get_retry_flags(ctx->bio));#endif        /* Falling back... */        ctx->encrypt.exhausted_reset = 1;        BIO_clear_retry_flags(bio);    }    status = serf_bucket_read(ctx->decrypt.pending, inlen, &data, &len);    ctx->decrypt.status = status;#ifdef SSL_VERBOSE    printf("bio_bucket_read received %d bytes (%d)/n", len, status);#endif    if (!SERF_BUCKET_READ_ERROR(status)) {        /* Oh suck. */        if (len) {            memcpy(in, data, len);            return len;        }        if (APR_STATUS_IS_EOF(status)) {            BIO_set_retry_read(bio);            return -1;        }    }    return -1;}
开发者ID:coapp-deprecated,项目名称:serf_old,代码行数:45,


示例21: serf_databuf_peek

apr_status_t serf_databuf_peek(    serf_databuf_t *databuf,    const char **data,    apr_size_t *len){    apr_status_t status = common_databuf_prep(databuf, len);    if (status)        return status;    /* return everything we have */    *data = databuf->current;    *len = databuf->remaining;    /* If the last read returned EOF, then the peek should return the same.     * The other possibility in databuf->status is APR_EAGAIN, which we     * should never return. Thus, just return APR_SUCCESS for non-EOF cases.     */    if (APR_STATUS_IS_EOF(databuf->status))        return APR_EOF;    return APR_SUCCESS;}
开发者ID:KyleSanderson,项目名称:serf,代码行数:21,


示例22: get_next_place

// get next place takes the request, a file pointing to the file named in the request// and a buffer which is used to pass back the place's namestatic int get_next_place(request_rec *r, apr_file_t *fd, char * buf) {	// initialization	int counter=0;	apr_status_t rv;		// loop and get characters from file until the	// end of the file is reached or a newline is reached	// increment the counter based on the character	// and if the buffer capacity is reached then	// return an error	while(1) {		rv = apr_file_getc(buf+counter,fd);		if(APR_STATUS_IS_EOF(rv)) {			return DONE;		}		if(buf[counter]=='/n') {			buf[counter]='/0';			return OK;		}		// escapes spaces for URI		if(buf[counter]==' ') {			if(counter+3 < MAX_BUF_LENGTH) {				buf[counter]='%';				buf[counter+1]='2';				buf[counter+2]='0';			}			counter+=3;		}		else {			counter++;		}		// check for exceeding the buffer length		if(counter>=MAX_BUF_LENGTH) {			ap_log_rerror(APLOG_MARK, APLOG_ERR, 0 , r, "Name in file:%s is longer than %d!", 								r->filename, MAX_BUF_LENGTH);			return HTTP_INTERNAL_SERVER_ERROR;		}			}}
开发者ID:valderrama,项目名称:ModSSOBand,代码行数:41,


示例23: bio_file_read

/* Returns the amount read. */static int bio_file_read(BIO *bio, char *in, int inlen){    apr_file_t *file = bio->ptr;    apr_status_t status;    apr_size_t len;    BIO_clear_retry_flags(bio);    len = inlen;    status = apr_file_read(file, in, &len);    if (!SERF_BUCKET_READ_ERROR(status)) {        /* Oh suck. */        if (APR_STATUS_IS_EOF(status)) {            BIO_set_retry_read(bio);            return -1;        } else {            return len;        }    }    return -1;}
开发者ID:coapp-deprecated,项目名称:serf_old,代码行数:24,


示例24: connection_rx_cb

static int connection_rx_cb(serv_ctx_t *serv_ctx, apr_pollset_t *pollset, apr_socket_t *sock){    //printf("connection_rx_cb()/n");    apr_size_t len = BUFSIZE - serv_ctx->down_buf_level;    apr_status_t rv = apr_socket_recv(sock, (char*)&serv_ctx->down_buf[serv_ctx->down_buf_level], &len); //Daten empfangen    if (APR_STATUS_IS_EAGAIN(rv))    {        /* we have no data to read. we should keep polling the socket */        return TRUE;    }    else if (APR_STATUS_IS_EOF(rv) || len == 0)    {        /* we lost TCP session.         * XXX On Windows, rv would equal to APR_SUCCESS and len==0 in this case. So, we should check @len in addition to APR_EOF check */        return FALSE;    }    else    {        /* we got data *///        printf("rx(%d): ", serv_ctx->channel_number);//        for(size_t i = 0; i < len ;++i)//            printf("0x%02x ", (int)serv_ctx->down_buf[serv_ctx->down_buf_level+i]);//        printf("/n");        serv_ctx->down_buf_level += len;        //ipdbgJtagWrite(serv_ctx->chain, (uint8_t*)buf, len, serv_ctx->valid_mask);    }    return TRUE;}
开发者ID:EvaIPDBG,项目名称:IPDBG,代码行数:36,


示例25: ironbee_input_filter

//.........这里部分代码省略.........                            /// @todo Do something here???                            break;                        case IB_STREAM_EOB:#ifdef IB_DEBUG                            ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, c->base_server,                                         IB_PRODUCT_NAME ": EOB");#endif                            /// @todo Do something here???                            break;                        case IB_STREAM_EOS:#ifdef IB_DEBUG                            ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, c->base_server,                                         IB_PRODUCT_NAME ": EOS");#endif                            ibucket = apr_bucket_eos_create(bb->bucket_alloc);                            break;                        default:                            ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, c->base_server,                                         IB_PRODUCT_NAME ": UNKNOWN stream data type %d", sdata->type);                    }                    if (ibucket != NULL) {                        APR_BRIGADE_INSERT_TAIL(bb, ibucket);                    }                }                /* Need to send any processed data to avoid deadlock. */                if (!APR_BRIGADE_EMPTY(bb)) {                    return APR_SUCCESS;                }            }        }        /* Fetch data from the next filter. */        if (buffering) {            ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, c->base_server,                         "FETCH BRIGADE (buffering)");            /* Normally Apache will request the headers line-by-line, but             * IronBee does not require this.  So, here the request is             * fetched with READBYTES and IronBee will then break             * it back up into lines when it is injected back into             * the brigade after the data is processed.             */            rc = ap_get_brigade(f->next,                                bb,                                AP_MODE_READBYTES,                                block,                                HUGE_STRING_LEN);        }        else {            ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, c->base_server,                         "FETCH BRIGADE (non-buffering)");            rc = ap_get_brigade(f->next, bb, mode, block, readbytes);        }        /* Check for any timeouts/disconnects/errors. */        if (APR_STATUS_IS_TIMEUP(rc)) {            ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, c->base_server,                         IB_PRODUCT_NAME ": %s server closed connection (%d)",                         f->frec->name, rc);            ap_remove_input_filter(f);            return rc;        }        else if (APR_STATUS_IS_EOF(rc) || apr_get_os_error() == ECONNRESET) {            ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, c->base_server,                         IB_PRODUCT_NAME ": %s client closed connection (%d)",                         f->frec->name, rc);            ap_remove_input_filter(f);            return rc;        }        else if (rc != APR_SUCCESS) {            ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, c->base_server,                         IB_PRODUCT_NAME ": %s returned %d (0x%08x) - %s",                         f->frec->name, rc, rc, strerror(apr_get_os_error()));            return rc;        }        /* Process data. */        for (b = APR_BRIGADE_FIRST(bb);             b != APR_BRIGADE_SENTINEL(bb);             b = APR_BUCKET_NEXT(b))        {            if (buffering) {                /// @todo setaside into our own pool to destroy later???                apr_bucket_setaside(b, c->pool);                process_bucket(f, b);                APR_BUCKET_REMOVE(b);            }            else {                process_bucket(f, b);            }        }    } while (buffering);    return APR_SUCCESS;}
开发者ID:igalic,项目名称:ironbee,代码行数:101,


示例26: handle_response

/* If a 200 OK was received for the CONNECT request, consider the connection   as ready for use. */static apr_status_t handle_response(serf_request_t *request,                                    serf_bucket_t *response,                                    void *handler_baton,                                    apr_pool_t *pool){    apr_status_t status;    serf_status_line sl;    req_ctx_t *ctx = handler_baton;    serf_connection_t *conn = request->conn;    /* CONNECT request was cancelled. Assuming that this is during connection       reset, we can safely discard the request as a new one will be created       when setting up the next connection. */    if (!response)        return APR_SUCCESS;    status = serf_bucket_response_status(response, &sl);    if (SERF_BUCKET_READ_ERROR(status)) {        return status;    }    if (!sl.version && (APR_STATUS_IS_EOF(status) ||                      APR_STATUS_IS_EAGAIN(status)))    {        return status;    }    status = serf_bucket_response_wait_for_headers(response);    if (status && !APR_STATUS_IS_EOF(status)) {        return status;    }    /* RFC 2817:  Any successful (2xx) response to a CONNECT request indicates       that the proxy has established a connection to the requested host and       port, and has switched to tunneling the current connection to that server       connection.    */    if (sl.code >= 200 && sl.code < 300) {        serf_bucket_t *hdrs;        const char *val;        conn->state = SERF_CONN_CONNECTED;        /* Body is supposed to be empty. */        apr_pool_destroy(ctx->pool);        serf_bucket_destroy(conn->ssltunnel_ostream);        serf_bucket_destroy(conn->stream);        conn->stream = NULL;        ctx = NULL;        serf__log_skt(CONN_VERBOSE, __FILE__, conn->skt,                      "successfully set up ssl tunnel./n");        /* Fix for issue #123: ignore the "Connection: close" header here,           leaving the header in place would make the serf's main context           loop close this connection immediately after reading the 200 OK           response. */        hdrs = serf_bucket_response_get_headers(response);        val = serf_bucket_headers_get(hdrs, "Connection");        if (val && strcasecmp("close", val) == 0) {            serf__log_skt(CONN_VERBOSE, __FILE__, conn->skt,                      "Ignore Connection: close header on this reponse, don't "                      "close the connection now that the tunnel is set up./n");            serf__bucket_headers_remove(hdrs, "Connection");        }        return APR_EOF;    }    /* Authentication failure and 2xx Ok are handled at this point,       the rest are errors. */    return SERF_ERROR_SSLTUNNEL_SETUP_FAILED;}
开发者ID:2asoft,项目名称:freebsd,代码行数:75,


示例27: LL_RECORD_BLOCK_TIME

// virtualLLIOPipe::EStatus LLIOSocketReader::process_impl(	const LLChannelDescriptors& channels,	buffer_ptr_t& buffer,	bool& eos,	LLSD& context,	LLPumpIO* pump){	LL_RECORD_BLOCK_TIME(FTM_PROCESS_SOCKET_READER);	PUMP_DEBUG;	if(!mSource) return STATUS_PRECONDITION_NOT_MET;	if(!mInitialized)	{		PUMP_DEBUG;		// Since the read will not block, it's ok to initialize and		// attempt to read off the descriptor immediately.		mInitialized = true;		if(pump)		{			PUMP_DEBUG;			LL_DEBUGS() << "Initializing poll descriptor for LLIOSocketReader."					 << LL_ENDL;			apr_pollfd_t poll_fd;			poll_fd.p = NULL;			poll_fd.desc_type = APR_POLL_SOCKET;			poll_fd.reqevents = APR_POLLIN;			poll_fd.rtnevents = 0x0;			poll_fd.desc.s = mSource->getSocket();			poll_fd.client_data = NULL;			pump->setConditional(this, &poll_fd);		}	}	//if(!buffer)	//{	//	buffer = new LLBufferArray;	//}	PUMP_DEBUG;	const apr_size_t READ_BUFFER_SIZE = 1024;	char read_buf[READ_BUFFER_SIZE]; /*Flawfinder: ignore*/	apr_size_t len;	apr_status_t status = APR_SUCCESS;	do	{		PUMP_DEBUG;		len = READ_BUFFER_SIZE;		status = apr_socket_recv(mSource->getSocket(), read_buf, &len);		buffer->append(channels.out(), (U8*)read_buf, len);	} while((APR_SUCCESS == status) && (READ_BUFFER_SIZE == len));	LL_DEBUGS() << "socket read status: " << status << LL_ENDL;	LLIOPipe::EStatus rv = STATUS_OK;	PUMP_DEBUG;	// *FIX: Also need to check for broken pipe	if(APR_STATUS_IS_EOF(status))	{		// *FIX: Should we shut down the socket read?		if(pump)		{			pump->setConditional(this, NULL);		}		rv = STATUS_DONE;		eos = true;	}	else if(APR_STATUS_IS_EAGAIN(status))	{/*Commented out by Aura 9-9-8 for DEV-19961.		// everything is fine, but we can terminate this process pump.			rv = STATUS_BREAK;*/	}	else	{		if(ll_apr_warn_status(status))		{			rv = STATUS_ERROR;		}	}	PUMP_DEBUG;	return rv;}
开发者ID:DamianZhaoying,项目名称:SingularityViewer,代码行数:81,


示例28: thread_socket_pipe_receiver

void* thread_socket_pipe_receiver(apr_thread_t* thd, void* data){	frl_socket_pipe* pipe = (frl_socket_pipe*)data;	apr_status_t state;	apr_socket_t* listen_sock;	apr_socket_create(&listen_sock, pipe->sock_addr->family, SOCK_STREAM, APR_PROTO_TCP, pipe->sockpool);	apr_socket_opt_set(listen_sock, APR_SO_NONBLOCK, 1);	apr_socket_timeout_set(listen_sock, 0);	apr_socket_opt_set(listen_sock, APR_SO_REUSEADDR, 1);	pipe->recv_state = apr_socket_bind(listen_sock, pipe->sock_addr);	F_ERROR_IF_RUN(APR_SUCCESS != pipe->recv_state, return NULL, "[frl_socket_pipe::thread_socket_pipe_receiver]: Socket Binding Error: %d/n", pipe->recv_state);	pipe->recv_state = apr_socket_listen(listen_sock, SOMAXCONN);	F_ERROR_IF_RUN(APR_SUCCESS != pipe->recv_state, return NULL, "[frl_socket_pipe::thread_socket_pipe_receiver]: Socket Listen Error: %d/n", pipe->recv_state);	apr_uint32_t hash;	apr_pollset_t* pollset;	apr_pollset_create(&pollset, pipe->replicate+2, pipe->sockpool, 0);	apr_pollfd_t pfd = { pipe->sockpool, APR_POLL_SOCKET, APR_POLLIN, 0, { NULL }, NULL };	pfd.desc.s = listen_sock;	apr_pollset_add(pollset, &pfd);	do {		// the fun loop		apr_int32_t total;		const apr_pollfd_t* ret_pfd;		pipe->recv_state = apr_pollset_poll(pollset, SOCKET_PIPE_POLL_TIMEOUT, &total, &ret_pfd);		if (APR_SUCCESS == pipe->recv_state)		{			for (int i = 0; i < total; i++)			{				if (ret_pfd[i].desc.s == listen_sock)				{					apr_socket_t* accept_sock;					state = apr_socket_accept(&accept_sock, listen_sock, pipe->sockpool);					F_ERROR_IF_RUN(APR_SUCCESS != state, continue, "[frl_socket_pipe::thread_socket_pipe_receiver]: Socket Accept Error: %d/n", state);					// accept connection, initiate recv					frl_pipe_state_t* pipestate = (frl_pipe_state_t*)frl_slab_palloc(pipe->statepool);					apr_pollfd_t pfd = { pipe->sockpool, APR_POLL_SOCKET, APR_POLLIN, 0, { NULL }, pipestate };					pipestate->state = FRL_PIPE_READ_HEADER_START;					pipestate->reader = (char*)&pipestate->header;					pipestate->offset = 0;					pipestate->size = SIZEOF_FRL_PIPE_HEADER_T;					pfd.desc.s = accept_sock;					apr_socket_opt_set(accept_sock, APR_SO_NONBLOCK, 1);					apr_socket_timeout_set(accept_sock, 0);					apr_pollset_add(pollset, &pfd);				} else {					if (ret_pfd[i].rtnevents & APR_POLLIN)					{						frl_pipe_state_t* pipestate = (frl_pipe_state_t*)ret_pfd[i].client_data;						apr_size_t len_a = pipestate->size-pipestate->offset;						state = apr_socket_recv(ret_pfd[i].desc.s, pipestate->reader, &len_a);						pipestate->offset += len_a;						pipestate->reader += len_a;						// read buffer to reader						if ((pipestate->offset >= pipestate->size)||(APR_STATUS_IS_EAGAIN(state)))						{							pipestate->offset = pipestate->size;							PIPE_STATE_TO_COMPLETE(pipestate->state);							// read complete, move state to complete						} else if ((APR_STATUS_IS_EOF(state))||(len_a == 0)) {							apr_pollfd_t pfd = { pipe->sockpool, APR_POLL_SOCKET, APR_POLLIN, 0, { NULL }, pipestate };							pfd.desc.s = ret_pfd[i].desc.s;							apr_pollset_remove(pollset, &pfd);							frl_slab_pfree(pipestate);							apr_socket_close(ret_pfd[i].desc.s);							// remote error, close connection							continue;						}						switch (pipestate->state)						{							case FRL_PIPE_READ_HEADER_COMPLETE:							{								// recv header (hash & size)								pipestate->data.offset = 0;								pipestate->data.size = pipestate->header.size;								state = pipe->recv_before(&pipestate->data.buf, &pipestate->data.size);								if (FRL_PROGRESS_IS_INTERRUPT(state))								{									apr_pollfd_t pfd = { pipe->sockpool, APR_POLL_SOCKET, APR_POLLIN, 0, { NULL }, pipestate };									pfd.desc.s = ret_pfd[i].desc.s;									apr_pollset_remove(pollset, &pfd);									frl_slab_pfree(pipestate);									apr_socket_close(ret_pfd[i].desc.s);									continue;								}								pipestate->state = FRL_PIPE_READ_BLOCK_START;								// start to read block (<= 4092 bytes each)								pipestate->reader = pipestate->buffer;								pipestate->offset = 0;								if (pipestate->data.size < SIZEOF_FRL_PIPE_BLOCK_BUFFER)									pipestate->size = pipestate->data.size+SIZEOF_FRL_PIPE_HEADER_T;								else									pipestate->size = SOCKET_PACKAGE_SIZE;								break;							}							case FRL_PIPE_READ_BLOCK_COMPLETE:							{								// a block complete, move to data								memcpy(pipestate->data.buf+pipestate->data.offset, &pipestate->block.start, pipestate->block.header.size);//.........这里部分代码省略.........
开发者ID:liuliu,项目名称:alter,代码行数:101,


示例29: handle_response

static apr_status_t handle_response(serf_request_t *request,                                    serf_bucket_t *response,                                    void *handler_baton,                                    apr_pool_t *pool){    const char *data;    apr_size_t len;    serf_status_line sl;    apr_status_t status;    handler_baton_t *ctx = handler_baton;    if (!response) {        /* Oh no!  We've been cancelled! */        abort();    }    status = serf_bucket_response_status(response, &sl);    if (status) {        if (APR_STATUS_IS_EAGAIN(status)) {            return APR_SUCCESS;        }        abort();    }    while (1) {        status = serf_bucket_read(response, 2048, &data, &len);        if (SERF_BUCKET_READ_ERROR(status))            return status;        /*fwrite(data, 1, len, stdout);*/        if (!ctx->hdr_read) {            serf_bucket_t *hdrs;            const char *val;            printf("Processing %s/n", ctx->path);            hdrs = serf_bucket_response_get_headers(response);            val = serf_bucket_headers_get(hdrs, "Content-Type");            /* FIXME: This check isn't quite right because Content-Type could             * be decorated; ideally strcasestr would be correct.             */            if (val && strcasecmp(val, "text/html") == 0) {                ctx->is_html = 1;                apr_pool_create(&ctx->parser_pool, NULL);                ctx->parser = apr_xml_parser_create(ctx->parser_pool);            }            else {                ctx->is_html = 0;            }            ctx->hdr_read = 1;        }        if (ctx->is_html) {            apr_status_t xs;            xs = apr_xml_parser_feed(ctx->parser, data, len);            /* Uh-oh. */            if (xs) {#ifdef SERF_VERBOSE                printf("XML parser error (feed): %d/n", xs);#endif                ctx->is_html = 0;            }        }        /* are we done yet? */        if (APR_STATUS_IS_EOF(status)) {            if (ctx->is_html) {                apr_xml_doc *xmld;                apr_status_t xs;                doc_path_t *dup;                xs = apr_xml_parser_done(ctx->parser, &xmld);                if (xs) {#ifdef SERF_VERBOSE                    printf("XML parser error (done): %d/n", xs);#endif                    return xs;                }                dup = (doc_path_t*)                    serf_bucket_mem_alloc(ctx->doc_queue_alloc,                                          sizeof(doc_path_t));                dup->doc = xmld;                dup->path = (char*)serf_bucket_mem_alloc(ctx->doc_queue_alloc,                                                         ctx->path_len);                memcpy(dup->path, ctx->path, ctx->path_len);                dup->pool = ctx->parser_pool;                *(doc_path_t **)apr_array_push(ctx->doc_queue) = dup;                apr_thread_cond_signal(ctx->doc_queue_condvar);            }            apr_atomic_dec32(ctx->requests_outstanding);            serf_bucket_mem_free(ctx->allocator, ctx->path);            if (ctx->query) {                serf_bucket_mem_free(ctx->allocator, ctx->query);                serf_bucket_mem_free(ctx->allocator, ctx->full_path);//.........这里部分代码省略.........
开发者ID:atkonn,项目名称:mod_chxj,代码行数:101,



注:本文中的APR_STATUS_IS_EOF函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ APR_STATUS_IS_TIMEUP函数代码示例
C++ APR_STATUS_IS_EAGAIN函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。