diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/stellar/packet.h | 3 | ||||
| -rw-r--r-- | include/stellar/packet_manager.h | 7 | ||||
| -rw-r--r-- | include/stellar/session.h | 15 | ||||
| -rw-r--r-- | include/stellar/session_manager.h | 27 |
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 |
