blob: 8848b85bef1bdea10e106c9d4b4871fdd67c82bd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
// 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 */
|