src/event/ngx_event_pipe.h - nginx source code

Data types defined

Macros defined

Source code


  1. /*
  2. * Copyright (C) Igor Sysoev
  3. * Copyright (C) Nginx, Inc.
  4. */


  5. #ifndef _NGX_EVENT_PIPE_H_INCLUDED_
  6. #define _NGX_EVENT_PIPE_H_INCLUDED_


  7. #include <ngx_config.h>
  8. #include <ngx_core.h>
  9. #include <ngx_event.h>


  10. typedef struct ngx_event_pipe_s  ngx_event_pipe_t;

  11. typedef ngx_int_t (*ngx_event_pipe_input_filter_pt)(ngx_event_pipe_t *p,
  12.                                                     ngx_buf_t *buf);
  13. typedef ngx_int_t (*ngx_event_pipe_output_filter_pt)(void *data,
  14.                                                      ngx_chain_t *chain);


  15. struct ngx_event_pipe_s {
  16.     ngx_connection_t  *upstream;
  17.     ngx_connection_t  *downstream;

  18.     ngx_chain_t       *free_raw_bufs;
  19.     ngx_chain_t       *in;
  20.     ngx_chain_t      **last_in;

  21.     ngx_chain_t       *writing;

  22.     ngx_chain_t       *out;
  23.     ngx_chain_t       *free;
  24.     ngx_chain_t       *busy;

  25.     /*
  26.      * the input filter i.e. that moves HTTP/1.1 chunks
  27.      * from the raw bufs to an incoming chain
  28.      */

  29.     ngx_event_pipe_input_filter_pt    input_filter;
  30.     void                             *input_ctx;

  31.     ngx_event_pipe_output_filter_pt   output_filter;
  32.     void                             *output_ctx;

  33. #if (NGX_THREADS || NGX_COMPAT)
  34.     ngx_int_t                       (*thread_handler)(ngx_thread_task_t *task,
  35.                                                       ngx_file_t *file);
  36.     void                             *thread_ctx;
  37.     ngx_thread_task_t                *thread_task;
  38. #endif

  39.     unsigned           read:1;
  40.     unsigned           cacheable:1;
  41.     unsigned           single_buf:1;
  42.     unsigned           free_bufs:1;
  43.     unsigned           upstream_done:1;
  44.     unsigned           upstream_error:1;
  45.     unsigned           upstream_eof:1;
  46.     unsigned           upstream_blocked:1;
  47.     unsigned           downstream_done:1;
  48.     unsigned           downstream_error:1;
  49.     unsigned           cyclic_temp_file:1;
  50.     unsigned           aio:1;

  51.     ngx_int_t          allocated;
  52.     ngx_bufs_t         bufs;
  53.     ngx_buf_tag_t      tag;

  54.     ssize_t            busy_size;

  55.     off_t              read_length;
  56.     off_t              length;

  57.     off_t              max_temp_file_size;
  58.     ssize_t            temp_file_write_size;

  59.     ngx_msec_t         read_timeout;
  60.     ngx_msec_t         send_timeout;
  61.     ssize_t            send_lowat;

  62.     ngx_pool_t        *pool;
  63.     ngx_log_t         *log;

  64.     ngx_chain_t       *preread_bufs;
  65.     size_t             preread_size;
  66.     ngx_buf_t         *buf_to_file;

  67.     size_t             limit_rate;
  68.     time_t             start_sec;

  69.     ngx_temp_file_t   *temp_file;

  70.     /* STUB */ int     num;
  71. };


  72. ngx_int_t ngx_event_pipe(ngx_event_pipe_t *p, ngx_int_t do_write);
  73. ngx_int_t ngx_event_pipe_copy_input_filter(ngx_event_pipe_t *p, ngx_buf_t *buf);
  74. ngx_int_t ngx_event_pipe_add_free_buf(ngx_event_pipe_t *p, ngx_buf_t *b);


  75. #endif /* _NGX_EVENT_PIPE_H_INCLUDED_ */