diff --git a/src/trans_auto.c b/src/trans_auto.c index 0f03ae59a..b87d911f1 100644 --- a/src/trans_auto.c +++ b/src/trans_auto.c @@ -6,8 +6,15 @@ #include "trans_auto.h" +PEP_STATUS auto_init(PEP_transport_t *transport, + PEP_SESSION session, PEP_transport_status_code *tsc) +{ + + return PEP_STATUS_OK; +} + PEP_STATUS auto_sendto(PEP_SESSION session, message *msg, - PEP_transport_status_code *tsc) + stringlist_t **unreachable_addresses, PEP_transport_status_code *tsc) { return PEP_STATUS_OK; @@ -19,3 +26,11 @@ PEP_STATUS auto_readnext(PEP_SESSION session, message **msg, return PEP_STATUS_OK; } + +PEP_STATUS auto_signal_statuschange(PEP_transport_id id, + PEP_transport_status_code tsc) +{ + + return PEP_STATUS_OK; +} + diff --git a/src/trans_auto.h b/src/trans_auto.h index 4a1584dc1..b706bc631 100644 --- a/src/trans_auto.h +++ b/src/trans_auto.h @@ -10,7 +10,7 @@ #include "transport.h" PEP_STATUS auto_sendto(PEP_SESSION session, message *msg, - PEP_transport_status_code *tsc); + stringlist_t **unreachable_addresses, PEP_transport_status_code *tsc); /** * @@ -23,7 +23,13 @@ PEP_STATUS auto_sendto(PEP_SESSION session, message *msg, * */ +PEP_STATUS auto_init(PEP_transport_t *transport, + PEP_SESSION session, PEP_transport_status_code *tsc); + PEP_STATUS auto_readnext(PEP_SESSION session, message **msg, PEP_transport_status_code *tsc); +PEP_STATUS auto_signal_statuschange(PEP_transport_id id, + PEP_transport_status_code tsc); + #endif diff --git a/src/transport.c b/src/transport.c index 0e0bdbabb..38c0846da 100644 --- a/src/transport.c +++ b/src/transport.c @@ -22,8 +22,12 @@ PEP_STATUS init_transport_system(PEP_SESSION session, bool in_first) memset(transports, 0, sizeof(PEP_transport_t) * PEP_trans__count); transports[PEP_trans_auto].id = PEP_trans_auto; + + transports[PEP_trans_auto].init = auto_init; transports[PEP_trans_auto].sendto = auto_sendto; transports[PEP_trans_auto].readnext = auto_readnext; + + transports[PEP_trans_auto].signal_statuschange = auto_signal_statuschange; } return PEP_STATUS_OK; diff --git a/src/transport.h b/src/transport.h index 1315a67f8..19e7f8798 100644 --- a/src/transport.h +++ b/src/transport.h @@ -15,19 +15,20 @@ extern "C" { #endif /** - * @enum PEP_transports + * @enum PEP_transport_id * * @brief TODO * */ -typedef enum _PEP_transports { +typedef enum _PEP_transport_id { // auto transport chooses transport per message automatically PEP_trans_auto = 0, -// PEP_trans_email, -// PEP_trans_whatsapp, +// PEP_trans_Email = 0x01, +// PEP_trans_RCE = 0x02, - PEP_trans__count -} PEP_transports; + PEP_trans__count, + PEP_trans_CC = 0xfe +} PEP_transport_id; // transports are delivering the transport status code // this is defined here: @@ -37,12 +38,22 @@ typedef uint32_t PEP_transport_status_code; typedef struct _PEP_transport_t PEP_transport_t; +// functions offered by transport + +typedef PEP_STATUS (*init_transport_t)(PEP_transport_t *transport, + PEP_SESSION session, PEP_transport_status_code *tsc); + typedef PEP_STATUS (*sendto_t)(PEP_SESSION session, message *msg, - PEP_transport_status_code *tsc); + stringlist_t **unreachable_addresses, PEP_transport_status_code *tsc); typedef PEP_STATUS (*recvnext_t)(PEP_SESSION session, message **msg, PEP_transport_status_code *tsc); +// functions offered by transport system + +typedef PEP_STATUS (*signal_statuschange_t)(PEP_transport_id id, + PEP_transport_status_code tsc); + /** * @struct _PEP_transport_t * @@ -50,10 +61,19 @@ typedef PEP_STATUS (*recvnext_t)(PEP_SESSION session, message **msg, * */ struct _PEP_transport_t { - PEP_transports id; // transport ID + PEP_transport_id id; // transport ID + const char *uri_scheme; // URI scheme this transport is + // covering + + // functions offered by transport + + init_transport_t init; + sendto_t sendto; + recvnext_t readnext; + + // functions offered by transport system - sendto_t sendto; // sendto function - recvnext_t readnext; // readnext function + signal_statuschange_t signal_statuschange; bool is_online_transport;