text: #ifndef RESPONSE_H
  #define RESPONSE_H
  
  #include "client.h"
  #include "meinheld.h"
  #include "time_cache.h"
  
  typedef struct iovec iovec_t;
  
  typedef struct {
    int fd;
    iovec_t *iov;
    uint32_t iov_cnt;
    uint32_t iov_size;
    uint32_t total;
    uint32_t total_size;
    uint8_t sended;
    PyObject *temp1;       // keep origin pointer
    PyObject *chunk_data;  // keep chunk_data origin pointer
  } write_bucket;
  
  typedef struct {
    PyObject_HEAD client_t *cli;
  } ResponseObject;
  
  typedef struct {
    PyObject_HEAD PyObject *filelike;
  
  } FileWrapperObject;
  
  typedef enum { STATUS_OK = 0, STATUS_SUSPEND, STATUS_ERROR } response_status;
  
  extern PyTypeObject ResponseObjectType;
  extern PyTypeObject FileWrapperType;
  extern ResponseObject *start_response;
  
  PyObject *create_start_response(client_t *cli);
  
  PyObject *file_wrapper(PyObject *self, PyObject *args);
  
  int CheckFileWrapper(PyObject *obj);
  
  response_status response_start(client_t *client);
  
  response_status process_body(client_t *client);
  
  response_status close_response(client_t *client);
  
  void setup_start_response(void);
  
  void clear_start_response(void);
  
  void send_error_page(client_t *client);
  
  #endif
  