in mini/mini_client.c [690:745]
int main(int argc, char *argv[])
{
int ret;
xqc_mini_cli_ctx_t cli_ctx = {0}, *ctx = &cli_ctx;
xqc_mini_cli_args_t *args = NULL;
xqc_mini_cli_user_conn_t *user_conn = NULL;
args = calloc(1, sizeof(xqc_mini_cli_args_t));
if (args == NULL) {
printf("[error] calloc args failed\n");
goto exit;
}
/* init env (for windows) */
xqc_platform_init_env();
/* init client environment (ctx & args) */
ret = xqc_mini_cli_init_env(ctx, args);
if (ret < 0) {
goto exit;
}
/* init client engine */
ret = xqc_mini_cli_init_xquic_engine(ctx, args);
if (ret < 0) {
printf("[error] init xquic engine failed\n");
goto exit;
}
/* init engine ctx */
ret = xqc_mini_cli_init_engine_ctx(ctx);
if (ret < 0) {
printf("[error] init engine ctx failed\n");
goto exit;
}
user_conn = xqc_mini_cli_user_conn_create(ctx);
if (user_conn == NULL) {
printf("[error] init user_conn failed.\n");
goto exit;
}
/* cli main process: build connection, process request, etc. */
xqc_mini_cli_main_process(user_conn, ctx);
/* start event loop */
event_base_dispatch(ctx->eb);
exit:
xqc_engine_destroy(ctx->engine);
xqc_mini_cli_on_connection_finish(user_conn);
xqc_mini_cli_free_ctx(ctx);
xqc_mini_cli_free_user_conn(user_conn);
return 0;
}