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
stellar-stellar/src/plugin/plugin_manager.cpp

82 lines
2.1 KiB
C++
Raw Normal View History

2024-04-11 19:44:02 +08:00
#include <assert.h>
2024-04-11 16:30:21 +08:00
#include "plugin_manager.h"
#include "session_priv.h"
#include "thread_idx.h"
2024-04-11 16:30:21 +08:00
struct plugin_manager
{
// TODO
};
void *plugin_manager_new_ctx(struct session *sess)
{
// TODO
2024-04-11 19:44:02 +08:00
return sess;
2024-04-11 16:30:21 +08:00
}
void plugin_manager_free_ctx(void *ctx)
{
// TODO
// struct session *sess = (struct session *)ctx;
// char buff[4096] = {0};
// session_to_json(sess, buff, sizeof(buff));
// PLUGIN_MANAGER_LOG_DEBUG("=> SESSION : %s", buff);
2024-04-11 16:30:21 +08:00
}
struct plugin_manager *plugin_manager_new(void)
{
// TODO
2024-04-11 19:44:02 +08:00
static struct plugin_manager mgr;
return &mgr;
2024-04-11 16:30:21 +08:00
}
void plugin_manager_free(struct plugin_manager *mgr)
{
// TODO
}
void plugin_manager_dispatch_session(struct plugin_manager *mgr, struct session *sess, struct packet *pkt)
{
// TODO
2024-04-11 19:44:02 +08:00
// current implementation only for testing
2024-04-11 16:30:21 +08:00
2024-04-11 19:44:02 +08:00
struct tcp_segment *seg;
enum session_state state = session_get_state(sess);
enum session_type type = session_get_type(sess);
PLUGIN_MANAGER_LOG_DEBUG("=> thread [%d] plugin dispatch session: %u %s %s %s", stellar_get_current_thread_index(), session_get_id(sess), session_get_tuple_str(sess), session_type_to_str(type), session_state_to_str(state));
2024-04-11 19:44:02 +08:00
// session_print(sess);
2024-04-11 16:30:21 +08:00
2024-04-11 19:44:02 +08:00
if (packet_is_ctrl(pkt))
{
// trigger ctrl msg with (mgr, sess, pkt)
// dispatch_plugin()
2024-04-11 16:30:21 +08:00
}
else
{
2024-04-11 19:44:02 +08:00
switch (type)
{
case SESSION_TYPE_TCP:
// trigger TCP msg with (mgr, sess, pkt)
// dispatch_plugin()
while ((seg = session_get_tcp_segment(sess)) != NULL)
{
// trigger TCP stream msg with (mgr, sess, seg->data, seg->len)
// dispatch_plugin()
session_free_tcp_segment(sess, seg);
}
break;
case SESSION_TYPE_UDP:
// trigger UDP msg with (mgr, sess, pkt)
// dispatch_plugin()
break;
default:
assert(0);
break;
}
2024-04-11 16:30:21 +08:00
}
}
void plugin_manager_dispatch_packet(struct plugin_manager *mgr, struct packet *pkt)
{
// TODO
}