This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
tango-tfe/common/src/tfe_http.cpp

80 lines
2.2 KiB
C++
Raw Normal View History

#include <stdio.h>
#include <stdlib.h>
#include <tfe_http.h>
#include <tfe_plugin.h>
struct tfe_http_half * tfe_http_request_create(int major_version, int method, const char * uri, const char * host)
{
return NULL;
}
struct tfe_http_half * tfe_http_response_create(int major_version, int resp_code)
{
return NULL;
}
struct ht_frame_session_ctx
{
void ** pmes;
unsigned int nr_pmes;
struct tfe_plugin * preempt_plugin;
};
struct ht_frame_session_ctx * http_frame_raise_session_begin(const struct tfe_stream * stream,
struct tfe_http_session * ht_session, unsigned int thread_id)
{
struct ht_frame_session_ctx * ss_ctx = ALLOC(struct ht_frame_session_ctx, 1);
ss_ctx->nr_pmes = tfe_plugin_total_counts();
ss_ctx->pmes = ALLOC(void *, ss_ctx->nr_pmes);
unsigned int __for_each_iterator = 0;
unsigned int __plugin_id = 0;
struct tfe_plugin * plugin_info_iter;
TFE_PLUGIN_FOREACH(plugin_info_iter, &__for_each_iterator)
{
if (plugin_info_iter->on_session_begin == NULL) continue;
plugin_info_iter->on_session_begin(stream, ht_session, thread_id, &ss_ctx->pmes[__plugin_id]);
}
return ss_ctx;
};
void http_frame_raise_session_end(struct ht_frame_session_ctx * ss_ctx, struct tfe_stream * stream,
struct tfe_http_session * ht_session, unsigned int thread_id)
{
unsigned int __for_each_iterator = 0;
unsigned int __plugin_id = 0;
struct tfe_plugin * plugin_info_iter;
TFE_PLUGIN_FOREACH(plugin_info_iter, &__for_each_iterator)
{
if (plugin_info_iter->on_session_end == NULL) continue;
plugin_info_iter->on_session_end(stream, ht_session, thread_id, &ss_ctx->pmes[__plugin_id]);
}
free(ss_ctx->pmes);
free(ss_ctx);
}
void http_frame_raise_event(struct ht_frame_session_ctx * ht_frame,
const struct tfe_stream * stream, struct tfe_http_session * ht_session, enum tfe_http_event event,
const unsigned char * data, size_t datalen, unsigned int thread_id)
{
unsigned int __for_each_iterator = 0;
unsigned int __plugin_id = 0;
struct tfe_plugin * plugin_info_iter;
TFE_PLUGIN_FOREACH(plugin_info_iter, &__for_each_iterator)
{
if (plugin_info_iter->on_session_data == NULL)
continue;
plugin_info_iter->on_session_data(stream, ht_session, event, data,
datalen, thread_id, &ht_frame->pmes[__plugin_id]);
}
return;
}