summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorluwenpeng <[email protected]>2024-09-20 16:56:05 +0800
committerluwenpeng <[email protected]>2024-09-20 17:06:10 +0800
commit94f1913e3e4cabee1d93d6de446f489dcf45ca62 (patch)
treecfbe90db308e1c2c080ca4b46a80d7ccb255258c /include
parent620019cf8e1c2be20a478ff8572bb0a9c22ddf3c (diff)
refactor(session manager): turning the session manager into a stellar module
Diffstat (limited to 'include')
-rw-r--r--include/stellar/packet.h3
-rw-r--r--include/stellar/packet_manager.h7
-rw-r--r--include/stellar/session.h15
-rw-r--r--include/stellar/session_manager.h27
4 files changed, 38 insertions, 14 deletions
diff --git a/include/stellar/packet.h b/include/stellar/packet.h
index 5ea2e75..e910237 100644
--- a/include/stellar/packet.h
+++ b/include/stellar/packet.h
@@ -185,6 +185,9 @@ uint16_t packet_get_raw_len(const struct packet *pkt);
const char *packet_get_payload(const struct packet *pkt);
uint16_t packet_get_payload_len(const struct packet *pkt);
+void packet_set_exdata(struct packet *pkt, int idx, void *ex_ptr);
+void *packet_get_exdata(struct packet *pkt, int idx);
+
#ifdef __cplusplus
}
#endif
diff --git a/include/stellar/packet_manager.h b/include/stellar/packet_manager.h
index ebbff80..8270c7b 100644
--- a/include/stellar/packet_manager.h
+++ b/include/stellar/packet_manager.h
@@ -5,7 +5,8 @@ extern "C"
{
#endif
-#include "packet.h"
+#include "stellar/exdata.h"
+#include "stellar/packet.h"
enum packet_stage
{
@@ -19,8 +20,10 @@ enum packet_stage
struct packet_manager;
+int packet_manager_new_packet_exdata_index(struct packet_manager *pkt_mgr, const char *name, exdata_free *func, void *arg);
+
typedef void on_packet_stage_callback(enum packet_stage stage, struct packet *pkt, void *args);
-int packet_manager_subscribe(struct packet_manager *pkt_mgr, enum packet_stage stage, on_packet_stage_callback cb, void *args);
+int packet_manager_subscribe(struct packet_manager *pkt_mgr, enum packet_stage stage, on_packet_stage_callback *cb, void *args);
// if two modules claim the same packet at the same stage, the second 'claim' fails.
// return 0 on success
diff --git a/include/stellar/session.h b/include/stellar/session.h
index a1aa684..67c8c98 100644
--- a/include/stellar/session.h
+++ b/include/stellar/session.h
@@ -5,20 +5,8 @@ extern "C"
{
#endif
-#include <stdint.h>
-
#include "stellar/packet.h"
-struct tcp_segment;
-const char *tcp_segment_get_data(const struct tcp_segment *seg);
-uint16_t tcp_segment_get_len(const struct tcp_segment *seg);
-
-#define TOPIC_TCP_STREAM "TCP_STREAM" //topic message: tcp_segment
-#define TOPIC_CONTROL_PACKET "CONTROL_PACKET" //topic message: packet
-
-#define TOPIC_TCP "TCP" //topic message: session
-#define TOPIC_UDP "UDP" //topic message: session
-
enum session_state
{
SESSION_STATE_INIT = 0,
@@ -155,6 +143,9 @@ const char *session_get0_readable_addr(const struct session *sess);
void session_set_discard(struct session *sess);
+void session_set_exdata(struct session *sess, int idx, void *ex_ptr);
+void *session_get_exdata(const struct session *sess, int idx);
+
#ifdef __cplusplus
}
#endif
diff --git a/include/stellar/session_manager.h b/include/stellar/session_manager.h
new file mode 100644
index 0000000..81fc316
--- /dev/null
+++ b/include/stellar/session_manager.h
@@ -0,0 +1,27 @@
+
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include "stellar/exdata.h"
+#include "stellar/session.h"
+
+struct session_manager;
+
+int session_manager_new_packet_exdata_index(struct session_manager *sess_mgr, const char *name, exdata_free *func, void *arg);
+
+typedef void on_session_callback(struct session *sess, struct packet *pkt, void *args);
+typedef void on_tcp_stream_callback(struct session *sess, const char *tcp_payload, uint32_t tcp_payload_len, void *args);
+
+int session_manager_subscribe_tcp(struct session_manager *sess_mgr, on_session_callback *cb, void *args);
+int session_manager_subscribe_udp(struct session_manager *sess_mgr, on_session_callback *cb, void *args);
+int session_manager_subscribe_control_packet(struct session_manager *sess_mgr, on_session_callback *cb, void *args);
+int session_manager_subscribe_tcp_stream(struct session_manager *sess_mgr, on_tcp_stream_callback *cb, void *args);
+
+#ifdef __cplusplus
+}
+#endif