123456789101112131415161718192021222324252627282930 |
- // SPDX-License-Identifier: GPL-3.0-or-later
- #ifndef HTTPD_CONNLIST_H
- #define HTTPD_CONNLIST_H
- #include "streaming.h"
- // (-1) in following macro is to keep conn list + next pointer
- // be power of 2
- #define CONN_LIST_MEMPOOL_SIZE ((2^5)-1)
- struct conn_list_leaf {
- h2o_stream_conn_t *conn[CONN_LIST_MEMPOOL_SIZE];
- struct conn_list_leaf *next;
- };
- typedef struct {
- struct conn_list_leaf *head;
- struct conn_list_leaf *tail;
- int size;
- int capacity;
- pthread_mutex_t lock;
- } conn_list_t;
- extern conn_list_t conn_list;
- void conn_list_insert(conn_list_t *list, h2o_stream_conn_t *conn);
- void conn_list_iter_all(conn_list_t *list, void (*cb)(h2o_stream_conn_t *conn));
- int conn_list_remove_conn(conn_list_t *list, h2o_stream_conn_t *conn);
- #endif /* HTTPD_CONNLIST_H */
|