#pragma once #include #include #include struct ssl_mgr; struct key_keeper; struct tfe_proxy { char name[TFE_SYMBOL_MAX]; struct event_base * evbase; struct event * sev[8]; struct event * gcev; struct tfe_config * opts; void * main_logger; unsigned int nr_work_threads; struct tfe_thread_ctx * work_threads; unsigned int nr_modules; struct tfe_plugin * modules; void * io_mod; struct ssl_mgr * ssl_mgr_handler; struct key_keeper * key_keeper_handler; }; struct tfe_proxy_accept_para { /* Both upstream and downstream FDs */ evutil_socket_t upstream_fd; evutil_socket_t downstream_fd; /* Session Type */ enum tfe_session_proto session_type; }; struct tfe_proxy * tfe_proxy_new(const char * profile); int tfe_proxy_fds_accept(struct tfe_proxy * ctx, const struct tfe_proxy_accept_para * para); void tfe_proxy_run(struct tfe_proxy * proxy);