Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Apache/modules/http2/   (Apache Software Stiftung Version 2.4.65©)  Datei vom 30.5.2023 mit Größe 2 kB image not shown  

Quelle  h2_c1_io.h   Sprache: C

 
/* Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.
 */


#ifndef __mod_h2__h2_c1_io__
#define __mod_h2__h2_c1_io__

struct h2_config;
struct h2_session;

/* h2_io is the basic handler of a httpd connection. It keeps two brigades,
 * one for input, one for output and works with the installed connection
 * filters.
 * The read is done via a callback function, so that input can be processed
 * directly without copying.
 */

typedef struct {
    struct h2_session *session;
    apr_bucket_brigade *output;

    int is_tls;
    int unflushed;
    apr_time_t cooldown_usecs;
    apr_int64_t warmup_size;
    
    apr_size_t write_size;
    apr_time_t last_write;
    apr_int64_t bytes_read;
    apr_int64_t bytes_written;
    
    int buffer_output;
    apr_off_t buffered_len;
    apr_off_t flush_threshold;
    unsigned int is_flushed : 1;
    unsigned int is_passing : 1;

    char *scratch;
    apr_size_t ssize;
    apr_size_t slen;
} h2_c1_io;

apr_status_t h2_c1_io_init(h2_c1_io *io, struct h2_session *session);

/**
 * Append data to the buffered output.
 * @param buf the data to append
 * @param length the length of the data to append
 */

apr_status_t h2_c1_io_add_data(h2_c1_io *io,
                         const char *buf,
                         size_t length);

apr_status_t h2_c1_io_add(h2_c1_io *io, apr_bucket *b);

apr_status_t h2_c1_io_append(h2_c1_io *io, apr_bucket_brigade *bb);

/**
 * Pass any buffered data on to the connection output filters.
 * @param io the connection io
 */

apr_status_t h2_c1_io_pass(h2_c1_io *io);

/**
 * if there is any data pendiong or was any data send
 * since the last FLUSH, send out a FLUSH now.
 */

apr_status_t h2_c1_io_assure_flushed(h2_c1_io *io);

/**
 * Check if the buffered amount of data needs flushing.
 */

int h2_c1_io_needs_flush(h2_c1_io *io);

/**
 * Check if we have output pending.
 */

int h2_c1_io_pending(h2_c1_io *io);

struct h2_session;

/**
 * Read c1 input and pass it on to nghttp2.
 * @param session the session
 * @param when_pending != 0 if only pending input (sitting in filters)
 *                     needs to be read
 */

apr_status_t h2_c1_read(struct h2_session *session);

#endif /* defined(__mod_h2__h2_c1_io__) */

Messung V0.5
C=95 H=100 G=97

¤ Dauer der Verarbeitung: 0.0 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.