#pragma once #include #include #include #include #include #include #include #include struct ssl_stream; struct ssl_mgr; struct ssl_mgr * ssl_manager_init(const char * ini_profile, const char * section, struct event_base * ev_base_gc, void * logger, screen_stat_handle_t fs); void ssl_manager_destroy(struct ssl_mgr * mgr); struct ssl_stream * ssl_upstream_create_result_release_stream(future_result_t * result); struct bufferevent * ssl_upstream_create_result_release_bev(future_result_t * result); void ssl_async_upstream_create(struct future * f, struct ssl_mgr * mgr, evutil_socket_t fd_upstream, evutil_socket_t fd_downstream, struct event_base * evbase); struct ssl_stream * ssl_downstream_create_result_release_stream(future_result_t * result); struct bufferevent * ssl_downstream_create_result_release_bev(future_result_t * result); void ssl_async_downstream_create(struct future * f, struct ssl_mgr * mgr, struct ssl_stream * upstream, evutil_socket_t fd_downstream, int keyring_id, struct event_base * evbase); void ssl_stream_free_and_close_fd(struct ssl_stream * stream, struct event_base * evbase, evutil_socket_t fd); void ssl_stream_log_error(struct bufferevent * bev, enum tfe_conn_dir dir, void* logger);